Loading tools/fs_config/Android.bp +52 −22 Original line number Diff line number Diff line Loading @@ -40,14 +40,44 @@ cc_binary_host { cflags: ["-Werror"], } python_binary_host { name: "fs_config_generator", srcs: ["fs_config_generator.py"], version: { py2: { enabled: true, }, py3: { enabled: false, }, }, } python_test_host { name: "test_fs_config_generator", main: "test_fs_config_generator.py", srcs: [ "test_fs_config_generator.py", "fs_config_generator.py", ], version: { py2: { enabled: true, }, py3: { enabled: false, }, }, } target_fs_config_gen_filegroup { name: "target_fs_config_gen", } genrule { name: "oemaids_header_gen", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -67,8 +97,8 @@ cc_library_headers { // TARGET_FS_CONFIG_GEN files. genrule { name: "passwd_gen_system", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -84,8 +114,8 @@ prebuilt_etc { genrule { name: "passwd_gen_vendor", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -102,8 +132,8 @@ prebuilt_etc { genrule { name: "passwd_gen_odm", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -120,8 +150,8 @@ prebuilt_etc { genrule { name: "passwd_gen_product", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -138,8 +168,8 @@ prebuilt_etc { genrule { name: "passwd_gen_system_ext", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -159,8 +189,8 @@ prebuilt_etc { // TARGET_FS_CONFIG_GEN files. genrule { name: "group_gen_system", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -176,8 +206,8 @@ prebuilt_etc { genrule { name: "group_gen_vendor", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -194,8 +224,8 @@ prebuilt_etc { genrule { name: "group_gen_odm", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -212,8 +242,8 @@ prebuilt_etc { genrule { name: "group_gen_product", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -230,8 +260,8 @@ prebuilt_etc { genrule { name: "group_gen_system_ext", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading tools/fs_config/README.md +4 −4 Original line number Diff line number Diff line Loading @@ -69,13 +69,13 @@ generated header file. From within the `fs_config` directory, unit tests can be executed like so: $ python -m unittest test_fs_config_generator.Tests ............. $ python test_fs_config_generator.py ................ ---------------------------------------------------------------------- Ran 13 tests in 0.004s Ran 16 tests in 0.004s OK One could also use nose if they would like: $ nose2 Loading tools/fs_config/fs_config_generator.py +35 −11 Original line number Diff line number Diff line Loading @@ -179,6 +179,10 @@ class AID(object): and self.normalized_value == other.normalized_value \ and self.login_shell == other.login_shell def __repr__(self): return "AID { identifier = %s, value = %s, normalized_value = %s, login_shell = %s }" % ( self.identifier, self.value, self.normalized_value, self.login_shell) @staticmethod def is_friendly(name): """Determines if an AID is a freindly name or C define. Loading Loading @@ -312,7 +316,7 @@ class AIDHeaderParser(object): ] _AID_DEFINE = re.compile(r'\s*#define\s+%s.*' % AID.PREFIX) _RESERVED_RANGE = re.compile( r'#define AID_(.+)_RESERVED_\d*_*(START|END)\s+(\d+)') r'#define AID_(.+)_RESERVED_(?:(\d+)_)?(START|END)\s+(\d+)') # AID lines cannot end with _START or _END, ie AID_FOO is OK # but AID_FOO_START is skiped. Note that AID_FOOSTART is NOT skipped. Loading Loading @@ -345,6 +349,7 @@ class AIDHeaderParser(object): aid_file (file): The open AID header file to parse. """ ranges_by_name = {} for lineno, line in enumerate(aid_file): def error_message(msg): Loading @@ -355,20 +360,24 @@ class AIDHeaderParser(object): range_match = self._RESERVED_RANGE.match(line) if range_match: partition = range_match.group(1).lower() value = int(range_match.group(3), 0) partition, name, start, value = range_match.groups() partition = partition.lower() if name is None: name = "unnamed" start = start == "START" value = int(value, 0) if partition == 'oem': partition = 'vendor' if partition in self._ranges: if isinstance(self._ranges[partition][-1], int): self._ranges[partition][-1] = ( self._ranges[partition][-1], value) else: self._ranges[partition].append(value) else: self._ranges[partition] = [value] if partition not in ranges_by_name: ranges_by_name[partition] = {} if name not in ranges_by_name[partition]: ranges_by_name[partition][name] = [None, None] if ranges_by_name[partition][name][0 if start else 1] is not None: sys.exit(error_message("{} of range {} of partition {} was already defined".format( "Start" if start else "End", name, partition))) ranges_by_name[partition][name][0 if start else 1] = value if AIDHeaderParser._AID_DEFINE.match(line): chunks = line.split() Loading @@ -390,6 +399,21 @@ class AIDHeaderParser(object): error_message('{} for "{}"'.format( exception, identifier))) for partition in ranges_by_name: for name in ranges_by_name[partition]: start = ranges_by_name[partition][name][0] end = ranges_by_name[partition][name][1] if start is None: sys.exit("Range '%s' for partition '%s' had undefined start" % (name, partition)) if end is None: sys.exit("Range '%s' for partition '%s' had undefined end" % (name, partition)) if start > end: sys.exit("Range '%s' for partition '%s' had start after end. Start: %d, end: %d" % (name, partition, start, end)) if partition not in self._ranges: self._ranges[partition] = [] self._ranges[partition].append((start, end)) def _handle_aid(self, identifier, value): """Handle an AID C #define. Loading tools/fs_config/test_fs_config_generator.py +29 −10 Original line number Diff line number Diff line Loading @@ -78,11 +78,11 @@ class Tests(unittest.TestCase): temp_file.flush() parser = AIDHeaderParser(temp_file.name) oem_ranges = parser.oem_ranges ranges = parser.ranges aids = parser.aids self.assertTrue((2900, 2999) in oem_ranges) self.assertFalse((5000, 6000) in oem_ranges) self.assertTrue((2900, 2999) in ranges["vendor"]) self.assertFalse((5000, 6000) in ranges["vendor"]) for aid in aids: self.assertTrue(aid.normalized_value in ['1000', '1001']) Loading @@ -105,11 +105,11 @@ class Tests(unittest.TestCase): temp_file.flush() parser = AIDHeaderParser(temp_file.name) oem_ranges = parser.oem_ranges ranges = parser.ranges aids = parser.aids self.assertTrue((2900, 2999) in oem_ranges) self.assertFalse((5000, 6000) in oem_ranges) self.assertTrue((2900, 2999) in ranges["vendor"]) self.assertFalse((5000, 6000) in ranges["vendor"]) for aid in aids: self.assertTrue(aid.normalized_value in ['1000', '1001']) Loading Loading @@ -168,6 +168,22 @@ class Tests(unittest.TestCase): with self.assertRaises(SystemExit): AIDHeaderParser(temp_file.name) def test_aid_header_parser_bad_oem_range_duplicated(self): """Test AID Header Parser bad oem range (no start) input file""" with tempfile.NamedTemporaryFile() as temp_file: temp_file.write( textwrap.dedent(""" #define AID_OEM_RESERVED_START 2000 #define AID_OEM_RESERVED_END 2900 #define AID_OEM_RESERVED_START 3000 #define AID_OEM_RESERVED_END 3900 """)) temp_file.flush() with self.assertRaises(SystemExit): AIDHeaderParser(temp_file.name) def test_aid_header_parser_bad_oem_range_mismatch_start_end(self): """Test AID Header Parser bad oem range mismatched input file""" Loading Loading @@ -262,7 +278,7 @@ class Tests(unittest.TestCase): """)) temp_file.flush() parser = FSConfigFileParser([temp_file.name], [(5000, 5999)]) parser = FSConfigFileParser([temp_file.name], {"oem1": [(5000, 5999)]}) files = parser.files dirs = parser.dirs aids = parser.aids Loading @@ -284,7 +300,7 @@ class Tests(unittest.TestCase): FSConfig('0777', 'AID_FOO', 'AID_SYSTEM', '0', '/vendor/path/dir/', temp_file.name)) self.assertEqual(aid, AID('AID_OEM1', '0x1389', temp_file.name, '/vendor/bin/sh')) self.assertEqual(aid, AID('AID_OEM1', '0x1389', temp_file.name, '/bin/sh')) def test_fs_config_file_parser_bad(self): """Test FSConfig Parser bad input file""" Loading @@ -298,7 +314,7 @@ class Tests(unittest.TestCase): temp_file.flush() with self.assertRaises(SystemExit): FSConfigFileParser([temp_file.name], [(5000, 5999)]) FSConfigFileParser([temp_file.name], {}) def test_fs_config_file_parser_bad_aid_range(self): """Test FSConfig Parser bad aid range value input file""" Loading @@ -312,4 +328,7 @@ class Tests(unittest.TestCase): temp_file.flush() with self.assertRaises(SystemExit): FSConfigFileParser([temp_file.name], [(5000, 5999)]) FSConfigFileParser([temp_file.name], {"oem1": [(5000, 5999)]}) if __name__ == "__main__": unittest.main() Loading
tools/fs_config/Android.bp +52 −22 Original line number Diff line number Diff line Loading @@ -40,14 +40,44 @@ cc_binary_host { cflags: ["-Werror"], } python_binary_host { name: "fs_config_generator", srcs: ["fs_config_generator.py"], version: { py2: { enabled: true, }, py3: { enabled: false, }, }, } python_test_host { name: "test_fs_config_generator", main: "test_fs_config_generator.py", srcs: [ "test_fs_config_generator.py", "fs_config_generator.py", ], version: { py2: { enabled: true, }, py3: { enabled: false, }, }, } target_fs_config_gen_filegroup { name: "target_fs_config_gen", } genrule { name: "oemaids_header_gen", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) oemaid --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -67,8 +97,8 @@ cc_library_headers { // TARGET_FS_CONFIG_GEN files. genrule { name: "passwd_gen_system", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -84,8 +114,8 @@ prebuilt_etc { genrule { name: "passwd_gen_vendor", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -102,8 +132,8 @@ prebuilt_etc { genrule { name: "passwd_gen_odm", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -120,8 +150,8 @@ prebuilt_etc { genrule { name: "passwd_gen_product", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -138,8 +168,8 @@ prebuilt_etc { genrule { name: "passwd_gen_system_ext", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) passwd --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) passwd --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -159,8 +189,8 @@ prebuilt_etc { // TARGET_FS_CONFIG_GEN files. genrule { name: "group_gen_system", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=system --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -176,8 +206,8 @@ prebuilt_etc { genrule { name: "group_gen_vendor", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=vendor --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -194,8 +224,8 @@ prebuilt_etc { genrule { name: "group_gen_odm", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=odm --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -212,8 +242,8 @@ prebuilt_etc { genrule { name: "group_gen_product", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=product --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading @@ -230,8 +260,8 @@ prebuilt_etc { genrule { name: "group_gen_system_ext", tool_files: ["fs_config_generator.py"], cmd: "$(location fs_config_generator.py) group --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", tools: ["fs_config_generator"], cmd: "$(location fs_config_generator) group --partition=system_ext --aid-header=$(location :android_filesystem_config_header) $(locations :target_fs_config_gen) >$(out)", srcs: [ ":target_fs_config_gen", ":android_filesystem_config_header", Loading
tools/fs_config/README.md +4 −4 Original line number Diff line number Diff line Loading @@ -69,13 +69,13 @@ generated header file. From within the `fs_config` directory, unit tests can be executed like so: $ python -m unittest test_fs_config_generator.Tests ............. $ python test_fs_config_generator.py ................ ---------------------------------------------------------------------- Ran 13 tests in 0.004s Ran 16 tests in 0.004s OK One could also use nose if they would like: $ nose2 Loading
tools/fs_config/fs_config_generator.py +35 −11 Original line number Diff line number Diff line Loading @@ -179,6 +179,10 @@ class AID(object): and self.normalized_value == other.normalized_value \ and self.login_shell == other.login_shell def __repr__(self): return "AID { identifier = %s, value = %s, normalized_value = %s, login_shell = %s }" % ( self.identifier, self.value, self.normalized_value, self.login_shell) @staticmethod def is_friendly(name): """Determines if an AID is a freindly name or C define. Loading Loading @@ -312,7 +316,7 @@ class AIDHeaderParser(object): ] _AID_DEFINE = re.compile(r'\s*#define\s+%s.*' % AID.PREFIX) _RESERVED_RANGE = re.compile( r'#define AID_(.+)_RESERVED_\d*_*(START|END)\s+(\d+)') r'#define AID_(.+)_RESERVED_(?:(\d+)_)?(START|END)\s+(\d+)') # AID lines cannot end with _START or _END, ie AID_FOO is OK # but AID_FOO_START is skiped. Note that AID_FOOSTART is NOT skipped. Loading Loading @@ -345,6 +349,7 @@ class AIDHeaderParser(object): aid_file (file): The open AID header file to parse. """ ranges_by_name = {} for lineno, line in enumerate(aid_file): def error_message(msg): Loading @@ -355,20 +360,24 @@ class AIDHeaderParser(object): range_match = self._RESERVED_RANGE.match(line) if range_match: partition = range_match.group(1).lower() value = int(range_match.group(3), 0) partition, name, start, value = range_match.groups() partition = partition.lower() if name is None: name = "unnamed" start = start == "START" value = int(value, 0) if partition == 'oem': partition = 'vendor' if partition in self._ranges: if isinstance(self._ranges[partition][-1], int): self._ranges[partition][-1] = ( self._ranges[partition][-1], value) else: self._ranges[partition].append(value) else: self._ranges[partition] = [value] if partition not in ranges_by_name: ranges_by_name[partition] = {} if name not in ranges_by_name[partition]: ranges_by_name[partition][name] = [None, None] if ranges_by_name[partition][name][0 if start else 1] is not None: sys.exit(error_message("{} of range {} of partition {} was already defined".format( "Start" if start else "End", name, partition))) ranges_by_name[partition][name][0 if start else 1] = value if AIDHeaderParser._AID_DEFINE.match(line): chunks = line.split() Loading @@ -390,6 +399,21 @@ class AIDHeaderParser(object): error_message('{} for "{}"'.format( exception, identifier))) for partition in ranges_by_name: for name in ranges_by_name[partition]: start = ranges_by_name[partition][name][0] end = ranges_by_name[partition][name][1] if start is None: sys.exit("Range '%s' for partition '%s' had undefined start" % (name, partition)) if end is None: sys.exit("Range '%s' for partition '%s' had undefined end" % (name, partition)) if start > end: sys.exit("Range '%s' for partition '%s' had start after end. Start: %d, end: %d" % (name, partition, start, end)) if partition not in self._ranges: self._ranges[partition] = [] self._ranges[partition].append((start, end)) def _handle_aid(self, identifier, value): """Handle an AID C #define. Loading
tools/fs_config/test_fs_config_generator.py +29 −10 Original line number Diff line number Diff line Loading @@ -78,11 +78,11 @@ class Tests(unittest.TestCase): temp_file.flush() parser = AIDHeaderParser(temp_file.name) oem_ranges = parser.oem_ranges ranges = parser.ranges aids = parser.aids self.assertTrue((2900, 2999) in oem_ranges) self.assertFalse((5000, 6000) in oem_ranges) self.assertTrue((2900, 2999) in ranges["vendor"]) self.assertFalse((5000, 6000) in ranges["vendor"]) for aid in aids: self.assertTrue(aid.normalized_value in ['1000', '1001']) Loading @@ -105,11 +105,11 @@ class Tests(unittest.TestCase): temp_file.flush() parser = AIDHeaderParser(temp_file.name) oem_ranges = parser.oem_ranges ranges = parser.ranges aids = parser.aids self.assertTrue((2900, 2999) in oem_ranges) self.assertFalse((5000, 6000) in oem_ranges) self.assertTrue((2900, 2999) in ranges["vendor"]) self.assertFalse((5000, 6000) in ranges["vendor"]) for aid in aids: self.assertTrue(aid.normalized_value in ['1000', '1001']) Loading Loading @@ -168,6 +168,22 @@ class Tests(unittest.TestCase): with self.assertRaises(SystemExit): AIDHeaderParser(temp_file.name) def test_aid_header_parser_bad_oem_range_duplicated(self): """Test AID Header Parser bad oem range (no start) input file""" with tempfile.NamedTemporaryFile() as temp_file: temp_file.write( textwrap.dedent(""" #define AID_OEM_RESERVED_START 2000 #define AID_OEM_RESERVED_END 2900 #define AID_OEM_RESERVED_START 3000 #define AID_OEM_RESERVED_END 3900 """)) temp_file.flush() with self.assertRaises(SystemExit): AIDHeaderParser(temp_file.name) def test_aid_header_parser_bad_oem_range_mismatch_start_end(self): """Test AID Header Parser bad oem range mismatched input file""" Loading Loading @@ -262,7 +278,7 @@ class Tests(unittest.TestCase): """)) temp_file.flush() parser = FSConfigFileParser([temp_file.name], [(5000, 5999)]) parser = FSConfigFileParser([temp_file.name], {"oem1": [(5000, 5999)]}) files = parser.files dirs = parser.dirs aids = parser.aids Loading @@ -284,7 +300,7 @@ class Tests(unittest.TestCase): FSConfig('0777', 'AID_FOO', 'AID_SYSTEM', '0', '/vendor/path/dir/', temp_file.name)) self.assertEqual(aid, AID('AID_OEM1', '0x1389', temp_file.name, '/vendor/bin/sh')) self.assertEqual(aid, AID('AID_OEM1', '0x1389', temp_file.name, '/bin/sh')) def test_fs_config_file_parser_bad(self): """Test FSConfig Parser bad input file""" Loading @@ -298,7 +314,7 @@ class Tests(unittest.TestCase): temp_file.flush() with self.assertRaises(SystemExit): FSConfigFileParser([temp_file.name], [(5000, 5999)]) FSConfigFileParser([temp_file.name], {}) def test_fs_config_file_parser_bad_aid_range(self): """Test FSConfig Parser bad aid range value input file""" Loading @@ -312,4 +328,7 @@ class Tests(unittest.TestCase): temp_file.flush() with self.assertRaises(SystemExit): FSConfigFileParser([temp_file.name], [(5000, 5999)]) FSConfigFileParser([temp_file.name], {"oem1": [(5000, 5999)]}) if __name__ == "__main__": unittest.main()