diff options
-rwxr-xr-x | tools/android_test_mapping_format.py | 8 | ||||
-rwxr-xr-x | tools/android_test_mapping_format_unittest.py | 25 |
2 files changed, 31 insertions, 2 deletions
diff --git a/tools/android_test_mapping_format.py b/tools/android_test_mapping_format.py index a5d68be..0b78dd5 100755 --- a/tools/android_test_mapping_format.py +++ b/tools/android_test_mapping_format.py @@ -36,6 +36,7 @@ OPTIONS = 'options' PATH = 'path' HOST = 'host' PREFERRED_TARGETS = 'preferred_targets' +FILE_PATTERNS = 'file_patterns' TEST_MAPPING_URL = ( 'https://source.android.com/compatibility/tests/development/' 'test-mapping') @@ -98,6 +99,13 @@ def _validate_test(test, test_mapping_file): 'Invalid test config in test mapping file %s. `preferred_targets` ' 'setting in test config can only be a list of strings. Failed test ' 'config: %s' % (test_mapping_file, test)) + file_patterns = test.get(FILE_PATTERNS, []) + if (not isinstance(file_patterns, list) or + any(not isinstance(p, basestring) for p in file_patterns)): + raise InvalidTestMappingError( + 'Invalid test config in test mapping file %s. `file_patterns` ' + 'setting in test config can only be a list of strings. Failed test ' + 'config: %s' % (test_mapping_file, test)) for option in test.get(OPTIONS, []): if len(option) != 1: raise InvalidTestMappingError( diff --git a/tools/android_test_mapping_format_unittest.py b/tools/android_test_mapping_format_unittest.py index ffd1160..248786e 100755 --- a/tools/android_test_mapping_format_unittest.py +++ b/tools/android_test_mapping_format_unittest.py @@ -22,7 +22,7 @@ import unittest import android_test_mapping_format -VALID_TEST_MAPPING = """ +VALID_TEST_MAPPING = r""" { "presubmit": [ { @@ -38,7 +38,8 @@ VALID_TEST_MAPPING = """ { "name": "CtsWindowManagerDeviceTestCases", "host": true, - "preferred_targets": ["a", "b"] + "preferred_targets": ["a", "b"], + "file_patterns": [".*\\.java"] } ], "imports": [ @@ -137,6 +138,17 @@ BAD_IMPORT_WRONG_IMPORT_VALUE = """ } """ +BAD_FILE_PATTERNS = """ +{ + "presubmit": [ + { + "name": "CtsWindowManagerDeviceTestCases", + "file_patterns": ["pattern", 123] + } + ] +} +""" + class AndroidTestMappingFormatTests(unittest.TestCase): """Unittest for android_test_mapping_format module.""" @@ -223,6 +235,15 @@ class AndroidTestMappingFormatTests(unittest.TestCase): android_test_mapping_format.process_file, self.test_mapping_file) + def test_invalid_test_mapping_file_patterns_value(self): + """Verify that file_patterns using wrong value can be detected.""" + with open(self.test_mapping_file, 'w') as f: + f.write(BAD_FILE_PATTERNS) + self.assertRaises( + android_test_mapping_format.InvalidTestMappingError, + android_test_mapping_format.process_file, + self.test_mapping_file) + if __name__ == '__main__': unittest.main() |