forked from openkylin/platform_build
Add support for multiple LOCAL_COMPATIBILITY_SUITES & undefined testcase directories.
1) Updates the LOCAL_COMPATIBILITY_SUITE line to allow for a testcase to belong to multiple suites. 2) Building testcases no longer fails if COMPATIBILITY_TESTCASES_OUT_<suite> is not defined. This testcase will just not output to that directory. This will be utilized by the device-tests and general-tests suites that don't require any extra output besides the common testcase directory. Bug: 35394351 Test: 1) Added multiple *TS testcases to cts & vts and verified they ended up in the common directory and each suite's testcase directory. Specifically tested CtsSplitApp to ensure the split usecase still works as well. 2) Added a CTS testcase to the device-tests suite, built device-tests and verified the cts/android-cts/testcases copy was not produced. Change-Id: Ic4c4e87e62be4fc0c5e394d88cc359518346dffa
This commit is contained in:
parent
1adeeb8b3c
commit
6bea37c7fa
|
@ -417,56 +417,44 @@ endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
## Compatibiliy suite files.
|
## Compatibility suite files.
|
||||||
###########################################################
|
###########################################################
|
||||||
ifdef LOCAL_COMPATIBILITY_SUITE
|
ifdef LOCAL_COMPATIBILITY_SUITE
|
||||||
ifneq ($(words $(LOCAL_COMPATIBILITY_SUITE)),1)
|
|
||||||
$(error $(LOCAL_PATH):$(LOCAL_MODULE) LOCAL_COMPATIBILITY_SUITE can be only one name)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Copy this module into its own subdirectory in the common testcases output directory.
|
|
||||||
my_testcases_subdir := $($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE)
|
|
||||||
|
|
||||||
# The module itself.
|
# The module itself.
|
||||||
my_compat_dist := \
|
$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
|
||||||
$(LOCAL_BUILT_MODULE):$(COMPATIBILITY_TESTCASES_OUT_$(LOCAL_COMPATIBILITY_SUITE))/$(my_installed_module_stem) \
|
$(eval my_compat_dist_$(suite) := $(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
|
||||||
$(LOCAL_BUILT_MODULE):$(my_testcases_subdir)/$(my_installed_module_stem)
|
$(LOCAL_BUILT_MODULE):$(dir)/$(my_installed_module_stem))))
|
||||||
|
|
||||||
# Make sure we only add the files once for multilib modules.
|
# Make sure we only add the files once for multilib modules.
|
||||||
ifndef $(my_prefix)$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_compat_files
|
ifndef $(my_prefix)$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_compat_files
|
||||||
$(my_prefix)$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_compat_files := true
|
$(my_prefix)$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_compat_files := true
|
||||||
|
|
||||||
# LOCAL_COMPATIBILITY_SUPPORT_FILES is a list of <src>[:<dest>].
|
# LOCAL_COMPATIBILITY_SUPPORT_FILES is a list of <src>[:<dest>].
|
||||||
my_compat_dist += $(foreach f, $(LOCAL_COMPATIBILITY_SUPPORT_FILES),\
|
$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
|
||||||
$(eval p := $(subst :,$(space),$(f)))\
|
$(eval my_compat_dist_$(suite) += $(foreach f, $(LOCAL_COMPATIBILITY_SUPPORT_FILES), \
|
||||||
$(eval s := $(word 1,$(p)))\
|
$(eval p := $(subst :,$(space),$(f))) \
|
||||||
$(eval n := $(or $(word 2,$(p)),$(notdir $(word 1, $(p))))) \
|
$(eval s := $(word 1,$(p))) \
|
||||||
$(eval d := $(COMPATIBILITY_TESTCASES_OUT_$(LOCAL_COMPATIBILITY_SUITE))/$(n)) \
|
$(eval n := $(or $(word 2,$(p)),$(notdir $(word 1, $(p))))) \
|
||||||
$(s):$(d) $(s):$(my_testcases_subdir)/$(n))
|
$(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
|
||||||
|
$(s):$(dir)/$(n)))))
|
||||||
|
|
||||||
|
|
||||||
ifneq (,$(wildcard $(LOCAL_PATH)/AndroidTest.xml))
|
ifneq (,$(wildcard $(LOCAL_PATH)/AndroidTest.xml))
|
||||||
my_compat_dist += \
|
$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
|
||||||
$(LOCAL_PATH)/AndroidTest.xml:$(COMPATIBILITY_TESTCASES_OUT_$(LOCAL_COMPATIBILITY_SUITE))/$(LOCAL_MODULE).config
|
$(eval my_compat_dist_$(suite) += $(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
|
||||||
my_compat_dist += \
|
$(LOCAL_PATH)/AndroidTest.xml:$(dir)/$(LOCAL_MODULE).config)))
|
||||||
$(LOCAL_PATH)/AndroidTest.xml:$(my_testcases_subdir)/$(LOCAL_MODULE).config
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(wildcard $(LOCAL_PATH)/DynamicConfig.xml))
|
ifneq (,$(wildcard $(LOCAL_PATH)/DynamicConfig.xml))
|
||||||
my_compat_dist += \
|
$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
|
||||||
$(LOCAL_PATH)/DynamicConfig.xml:$(COMPATIBILITY_TESTCASES_OUT_$(LOCAL_COMPATIBILITY_SUITE))/$(LOCAL_MODULE).dynamic
|
$(eval my_compat_dist_$(suite) += $(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
|
||||||
my_compat_dist += \
|
$(LOCAL_PATH)/DynamicConfig.xml:$(dir)/$(LOCAL_MODULE).dynamic)))
|
||||||
$(LOCAL_PATH)/DynamicConfig.xml:$(my_testcases_subdir)/$(LOCAL_MODULE).dynamic
|
|
||||||
endif
|
endif
|
||||||
endif # $(my_prefix)$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_compat_files
|
endif # $(my_prefix)$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_compat_files
|
||||||
|
|
||||||
my_compat_files := $(call copy-many-files, $(my_compat_dist))
|
$(call create-suite-dependencies)
|
||||||
|
|
||||||
COMPATIBILITY.$(LOCAL_COMPATIBILITY_SUITE).FILES := \
|
|
||||||
$(COMPATIBILITY.$(LOCAL_COMPATIBILITY_SUITE).FILES) \
|
|
||||||
$(my_compat_files)
|
|
||||||
|
|
||||||
# Copy over the compatibility files when user runs mm/mmm.
|
|
||||||
$(my_all_targets) : $(my_compat_files)
|
|
||||||
endif # LOCAL_COMPATIBILITY_SUITE
|
endif # LOCAL_COMPATIBILITY_SUITE
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|
|
@ -3243,6 +3243,30 @@ endef
|
||||||
#$(warning 42 == $(call math_max,5,42))
|
#$(warning 42 == $(call math_max,5,42))
|
||||||
#$(warning 42 == $(call math_max,42,5))
|
#$(warning 42 == $(call math_max,42,5))
|
||||||
|
|
||||||
|
###########################################################
|
||||||
|
## Compatibility suite tools
|
||||||
|
###########################################################
|
||||||
|
|
||||||
|
# Return a list of output directories for a given suite and the current LOCAL_MODULE
|
||||||
|
define compatibility_suite_dirs
|
||||||
|
$(strip \
|
||||||
|
$(COMPATIBILITY_TESTCASES_OUT_$(1)) \
|
||||||
|
$($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE))
|
||||||
|
endef
|
||||||
|
|
||||||
|
# For each suite:
|
||||||
|
# 1. Copy the files to the many suite output directories.
|
||||||
|
# 2. Add all the files to each suite's dependent files list.
|
||||||
|
# 3. Do the dependency addition to my_all_targets
|
||||||
|
# Requires for each suite: my_compat_dist_$(suite) to be defined.
|
||||||
|
define create-suite-dependencies
|
||||||
|
$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
|
||||||
|
$(eval my_compat_files_$(suite) := $(call copy-many-files, $(my_compat_dist_$(suite)))) \
|
||||||
|
$(eval COMPATIBILITY.$(suite).FILES := \
|
||||||
|
$(COMPATIBILITY.$(suite).FILES) $(my_compat_files_$(suite))) \
|
||||||
|
$(eval $(my_all_targets) : $(my_compat_files_$(suite))))
|
||||||
|
endef
|
||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
## Other includes
|
## Other includes
|
||||||
###########################################################
|
###########################################################
|
||||||
|
|
|
@ -624,18 +624,14 @@ ALL_MODULES.$(my_register_name).BUILT_INSTALLED += \
|
||||||
$(my_all_targets): $(installed_apk_splits)
|
$(my_all_targets): $(installed_apk_splits)
|
||||||
|
|
||||||
ifdef LOCAL_COMPATIBILITY_SUITE
|
ifdef LOCAL_COMPATIBILITY_SUITE
|
||||||
cts_testcase_file := $(foreach s,$(my_split_suffixes),$(COMPATIBILITY_TESTCASES_OUT_$(LOCAL_COMPATIBILITY_SUITE))/$(LOCAL_MODULE)_$(s).apk)
|
|
||||||
$(cts_testcase_file) : $(COMPATIBILITY_TESTCASES_OUT_$(LOCAL_COMPATIBILITY_SUITE))/$(LOCAL_MODULE)_%.apk : $(built_module_path)/package_%.apk | $(ACP)
|
|
||||||
$(copy-file-to-new-target)
|
|
||||||
common_testcase_file := $(foreach s,$(my_split_suffixes),$($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE)/$(LOCAL_MODULE)_$(s).apk)
|
|
||||||
$(common_testcase_file) : $($(my_prefix)OUT_TESTCASES)/$(LOCAL_MODULE)/$(LOCAL_MODULE)_%.apk : $(built_module_path)/package_%.apk
|
|
||||||
$(copy-file-to-new-target)
|
|
||||||
|
|
||||||
COMPATIBILITY.$(LOCAL_COMPATIBILITY_SUITE).FILES := \
|
$(foreach suite, $(LOCAL_COMPATIBILITY_SUITE), \
|
||||||
$(COMPATIBILITY.$(LOCAL_COMPATIBILITY_SUITE).FILES) \
|
$(eval my_compat_dist_$(suite) := $(foreach dir, $(call compatibility_suite_dirs,$(suite)), \
|
||||||
$(cts_testcase_file) $(common_testcase_file)
|
$(foreach s,$(my_split_suffixes),\
|
||||||
|
$(built_module_path)/package_$(s).apk:$(dir)/$(LOCAL_MODULE)_$(s).apk))))
|
||||||
|
|
||||||
|
$(call create-suite-dependencies)
|
||||||
|
|
||||||
$(my_all_targets) : $(cts_testcase_file) $(common_testcase_file)
|
|
||||||
endif # LOCAL_COMPATIBILITY_SUITE
|
endif # LOCAL_COMPATIBILITY_SUITE
|
||||||
endif # LOCAL_PACKAGE_SPLITS
|
endif # LOCAL_PACKAGE_SPLITS
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue