Allow tests to be disabled for presubmit check
A test can be disabled in two ways:
1. Add the test name to ALL_DISABLED_PRESUBMIT_TESTS variable.
Integration tests (tests inside TradeFed) can only be disabled in
this way.
2. In module config, set LOCAL_PRESUBMIT_DISABLED to true. This works
for tests with build target.
This change allows tests to be skipped in presubmit check to be saved in
a list that's included in test-mappings.zip build artifact.
Bug: 74971025
Test: m dist -j test-mapping
Change-Id: I6e3016b017ce1ade024dc4ded72a10c778b88e7f
diff --git a/core/base_rules.mk b/core/base_rules.mk
index 94c323e..f1ba90b 100644
--- a/core/base_rules.mk
+++ b/core/base_rules.mk
@@ -646,6 +646,13 @@
endif # LOCAL_COMPATIBILITY_SUITE
###########################################################
+## Add test module to ALL_DISABLED_PRESUBMIT_TESTS if LOCAL_PRESUBMIT_DISABLED is set to true.
+###########################################################
+ifeq ($(LOCAL_PRESUBMIT_DISABLED),true)
+ ALL_DISABLED_PRESUBMIT_TESTS += $(LOCAL_MODULE)
+endif # LOCAL_PRESUBMIT_DISABLED
+
+###########################################################
## Register with ALL_MODULES
###########################################################
diff --git a/core/clear_vars.mk b/core/clear_vars.mk
index eccaad5..12f38dc 100644
--- a/core/clear_vars.mk
+++ b/core/clear_vars.mk
@@ -196,6 +196,7 @@
LOCAL_PREBUILT_OBJ_FILES:=
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:=
LOCAL_PREBUILT_STRIP_COMMENTS:=
+LOCAL_PRESUBMIT_DISABLED:=
LOCAL_PRIVATE_PLATFORM_APIS:=
LOCAL_PRIVILEGED_MODULE:=
# '',full,custom,disabled,obfuscation,optimization
diff --git a/core/definitions.mk b/core/definitions.mk
index fe96688..6f029e9 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -102,6 +102,9 @@
# All installed vintf manifest fragments for a partition at
ALL_VINTF_MANIFEST_FRAGMENTS_LIST:=
+# All tests that should be skipped in presubmit check.
+ALL_DISABLED_PRESUBMIT_TESTS :=
+
###########################################################
## Debugging; prints a variable list to stdout
###########################################################
diff --git a/core/tasks/test_mapping.mk b/core/tasks/test_mapping.mk
index 36275b0..da64cab 100644
--- a/core/tasks/test_mapping.mk
+++ b/core/tasks/test_mapping.mk
@@ -12,7 +12,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Create an artifact to include TEST_MAPPING files in source tree.
+# Create an artifact to include TEST_MAPPING files in source tree. Also include
+# a file (out/disabled-presubmit-tests) containing the tests that should be
+# skipped in presubmit check.
.PHONY: test_mapping
@@ -21,13 +23,15 @@
test_mapping_list := $(OUT_DIR)/.module_paths/TEST_MAPPING.list
test_mappings := $(file <$(test_mapping_list))
$(test_mappings_zip) : PRIVATE_test_mappings := $(subst $(newline),\n,$(test_mappings))
+$(test_mappings_zip) : PRIVATE_all_disabled_presubmit_tests := $(ALL_DISABLED_PRESUBMIT_TESTS)
$(test_mappings_zip) : $(test_mappings) $(SOONG_ZIP)
- @echo "Building artifact to include TEST_MAPPING files."
- rm -rf $@
+ @echo "Building artifact to include TEST_MAPPING files and tests to skip in presubmit check."
+ rm -rf $@ $(dir $@)/disabled-presubmit-tests
+ echo $(sort $(PRIVATE_all_disabled_presubmit_tests)) | tr " " "\n" > $(dir $@)/disabled-presubmit-tests
echo -e "$(PRIVATE_test_mappings)" > $@.list
- $(SOONG_ZIP) -o $@ -C . -l $@.list
- rm -f $@.list
+ $(SOONG_ZIP) -o $@ -C . -l $@.list -C $(dir $@) -f $(dir $@)/disabled-presubmit-tests
+ rm -f $@.list $(dir $@)/disabled-presubmit-tests
test_mapping : $(test_mappings_zip)