LOCAL_MODULE_CLASS := FAKE
LOCAL_IS_HOST_MODULE := true
LOCAL_DONT_CHECK_MODULE := true
LOCAL_UNINSTALLABLE_MODULE := true
LOCAL_BUILT_MODULE_STEM := test.fake

# Construct the runtime classpath.
classpath_jars := $(call java-lib-files, $(test_runtime_libraries), HOST)

# Construct the list of test classes from the source file names.
test_source_files := $(call find-files-in-subdirs, $(test_source_directory), "*Test.java", .)
# Filter out tests that will not pass running under make.
test_source_files := $(filter-out org/robolectric/shadows/SQLiteCursorTest.java, $(test_source_files))

# Build the command that honors the test class filter, if any.
test_filter_command := $(if $(ROBOTEST_FILTER),grep -E "$(ROBOTEST_FILTER)",)

# Convert the test source file paths into package names by removing ".java" extension and replacing "/" with "."
test_class_names := $(sort $(subst /,., $(basename $(test_source_files))))
# Remove whitespace and sort the tests in alphabetical order.
ifdef test_filter_command
  test_class_names := $(sort $(shell echo '$(test_class_names)' | tr ' ' '\n' | $(test_filter_command)))
endif

include $(BUILD_SYSTEM)/base_rules.mk

# Define rules that copy test resource files to the intermediates folder.
intermediates := $(call local-intermediates-dir)
copy_test_resource_files :=
ifdef test_resources_directory
  test_resources_target_path := $(intermediates)/src/test/resources
  test_resource_files := $(call find-files-in-subdirs, $(test_resources_directory), "*" -and -type f, .)
  copy_test_resource_file_pairs := $(foreach j, $(test_resource_files), $(test_resources_directory)/$(j):$(test_resources_target_path)/$(j))
  copy_test_resource_files := $(call copy-many-files, $(copy_test_resource_file_pairs))
endif

# Define rules that copy android-all jars to the intermediates folder.
local_android_all_source_jar := $(call intermediates-dir-for, JAVA_LIBRARIES, robolectric_android-all-stub, , COMMON)/classes.jar
android_all_source_dir := prebuilts/misc/common/robolectric/android-all
android_all_target_dir := $(intermediates)/android-all
copy_android_all_jar_pairs := \
  $(android_all_source_dir)/android-all-4.1.2_r1-robolectric-r1.jar:$(android_all_target_dir)/android-all-4.1.2_r1-robolectric-r1.jar \
  $(android_all_source_dir)/android-all-4.2.2_r1.2-robolectric-r1.jar:$(android_all_target_dir)/android-all-4.2.2_r1.2-robolectric-r1.jar \
  $(android_all_source_dir)/android-all-4.3_r2-robolectric-r1.jar:$(android_all_target_dir)/android-all-4.3_r2-robolectric-r1.jar \
  $(android_all_source_dir)/android-all-4.4_r1-robolectric-r2.jar:$(android_all_target_dir)/android-all-4.4_r1-robolectric-r2.jar \
  $(android_all_source_dir)/android-all-5.0.2_r3-robolectric-r0.jar:$(android_all_target_dir)/android-all-5.0.2_r3-robolectric-r0.jar \
  $(android_all_source_dir)/android-all-5.1.1_r9-robolectric-r2.jar:$(android_all_target_dir)/android-all-5.1.1_r9-robolectric-r2.jar \
  $(android_all_source_dir)/android-all-6.0.1_r3-robolectric-r1.jar:$(android_all_target_dir)/android-all-6.0.1_r3-robolectric-r1.jar \
  $(android_all_source_dir)/android-all-7.0.0_r1-robolectric-r1.jar:$(android_all_target_dir)/android-all-7.0.0_r1-robolectric-r1.jar \
  $(android_all_source_dir)/android-all-7.1.0_r7-robolectric-r1.jar:$(android_all_target_dir)/android-all-7.1.0_r7-robolectric-r1.jar \
  $(android_all_source_dir)/android-all-8.0.0_r4-robolectric-r1.jar:$(android_all_target_dir)/android-all-8.0.0_r4-robolectric-r1.jar \
  $(android_all_source_dir)/android-all-8.1.0-robolectric-4611349.jar:$(android_all_target_dir)/android-all-8.1.0-robolectric-4611349.jar \
  $(android_all_source_dir)/android-all-9-robolectric-4913185-2.jar:$(android_all_target_dir)/android-all-9-robolectric-4913185-2.jar \
  $(android_all_source_dir)/android-all-9plus-robolectric-5616371.jar:$(android_all_target_dir)/android-all-9plus-robolectric-5616371.jar \
  $(local_android_all_source_jar):$(android_all_target_dir)/android-all-R-robolectric-r0.jar
copy_android_all_jars := $(call copy-many-files, $(copy_android_all_jar_pairs))

# If debugging the tests was requested, set up the JVM parameters to enable it.
debug_test_args :=
ifdef DEBUG_ROBOLECTRIC
    # The arguments to the JVM needed to debug the tests.
    # - server: wait for connection rather than connecting to a debugger
    # - transport: how to accept debugger connections (sockets)
    # - address: the host and port on which to accept debugger connections
    # - suspend: do not execute any code until the debugger connects
    debug_test_args := -Xdebug -agentlib:jdwp=server=y,transport=dt_socket,address=localhost:5005,suspend=y
endif

# Snapshot the variables so they cannot be polluted before the module is built.
$(LOCAL_BUILT_MODULE): private_java := $(JAVA)
$(LOCAL_BUILT_MODULE): private_debug_test_args := $(debug_test_args)
$(LOCAL_BUILT_MODULE): private_test_base_dir := $(intermediates)
$(LOCAL_BUILT_MODULE): private_test_class_names := $(test_class_names)
$(LOCAL_BUILT_MODULE): private_host_jdk_tools_jar := $(HOST_JDK_TOOLS_JAR)
$(LOCAL_BUILT_MODULE): private_android_all_dir := $(android_all_target_dir)
$(LOCAL_BUILT_MODULE): private_classpath_jars := $(call normalize-path-list, $(classpath_jars))

# Always re-run the tests, even if nothing has changed.
# Until the build system has a dedicated "no cache" option, claim to write
# a file that is never produced.
$(LOCAL_BUILT_MODULE): private_nocache := $(LOCAL_BUILT_MODULE).nocache
$(LOCAL_BUILT_MODULE): .KATI_IMPLICIT_OUTPUTS := $(LOCAL_BUILT_MODULE).nocache

# Define the basic recipe for building this module to execute the tests.
$(LOCAL_BUILT_MODULE): $(copy_test_resource_files) $(copy_android_all_jars) $(classpath_jars)
	$(hide) rm -f "$(private_nocache)"
	$(hide) $(private_java) \
	  -Drobolectric.offline=true \
	  -Drobolectric.resourcesMode=binary \
	  -Drobolectric-tests.base-dir=$(private_test_base_dir) \
	  -Drobolectric.dependency.dir=$(private_android_all_dir) \
	  $(private_debug_test_args) \
	  -cp $(private_host_jdk_tools_jar):$(private_test_base_dir):$(private_classpath_jars) \
	  org.junit.runner.JUnitCore \
	  $(private_test_class_names)
