From d7438cff3bf853cd1356b6fe432be1938a8efcf3 Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Tue, 26 Apr 2022 12:57:08 -0400 Subject: [PATCH] Add test_mapping_config to update_crate_tests Adds support for configuring TEST_MAPPING output in update_crate_tests.py by defining a test_mapping_config.json. The initial option that can be set is whether a test should be a postsubmit test instead of a presubmit test. Bug: 229727993 Test: update_crate_tests.py with test_mapping_config.json produces postsubmit tests Change-Id: I2f5a336c1af12630cc5df9d2c32ab63ac6099af8 --- scripts/update_crate_tests.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/scripts/update_crate_tests.py b/scripts/update_crate_tests.py index 8a45dd389..1795de22d 100755 --- a/scripts/update_crate_tests.py +++ b/scripts/update_crate_tests.py @@ -25,6 +25,15 @@ argument is provided, it assumes the crate is the current directory. $ update_crate_tests.py $ANDROID_BUILD_TOP/external/rust/crates/libc This script is automatically called by external_updater. + +A test_mapping_config.json file can be defined in the project directory to +configure the generated TEST_MAPPING file, for example: + + { + // Run tests in postsubmit instead of presubmit. + "postsubmit_tests":["foo"] + } + """ import argparse @@ -49,7 +58,8 @@ TEST_OPTIONS = { # "presubmit-rust" runs arm64 device tests on physical devices. TEST_GROUPS = [ "presubmit", - "presubmit-rust" + "presubmit-rust", + "postsubmit", ] # Excluded tests. These tests will be ignored by this script. @@ -269,16 +279,27 @@ class TestMapping(object): def tests_dirs_to_mapping(self, tests, dirs): """Translate the test list into a dictionary.""" test_mapping = {"imports": []} + config = None + if os.path.isfile(os.path.join(self.package.dir, "test_mapping_config.json")): + with open(os.path.join(self.package.dir, "test_mapping_config.json"), 'r') as fd: + config = json.load(fd) + for test_group in TEST_GROUPS: test_mapping[test_group] = [] for test in tests: if test in TEST_EXCLUDE: continue + if config and 'postsubmit_tests' in config: + if test in config['postsubmit_tests'] and 'postsubmit' not in test_group: + continue + if test not in config['postsubmit_tests'] and 'postsubmit' in test_group: + continue if test in TEST_OPTIONS: test_mapping[test_group].append({"name": test, "options": TEST_OPTIONS[test]}) else: test_mapping[test_group].append({"name": test}) test_mapping[test_group] = sorted(test_mapping[test_group], key=lambda t: t["name"]) + for dir in dirs: test_mapping["imports"].append({"path": dir}) test_mapping["imports"] = sorted(test_mapping["imports"], key=lambda t: t["path"]) @@ -331,6 +352,7 @@ def main(): subprocess.check_output(['repo', 'start', 'tmp_auto_test_mapping', '.']) subprocess.check_output(['git', 'add', 'TEST_MAPPING']) + subprocess.check_output(['git', 'add', 'test_mapping_config.json']) subprocess.check_output(['git', 'commit', '-m', 'Update TEST_MAPPING\n\nTest: None']) if args.push_change and (changed or untracked):