From 5a082f9a3310a425115061578ed8955ff342ef56 Mon Sep 17 00:00:00 2001 From: William Loh Date: Tue, 17 May 2022 20:21:50 +0000 Subject: Propagate max_sdk_version to manifest_fixer If max_sdk_version is included in Android.bp that value will now be propagated to manifest_fixer.py. This value will then be used to override any maxSdkVersion attribute set on permission or uses-permission tags in the android manifest if maxSdkVersion="-1". Bug: 223902327 Test: add max_sdk_version to Android.bp for test app Test: create permission in test app manifest with maxSdkVersion="-1" Test: run test to check maxSdkVersion=max_sdk_version Change-Id: Ic533ef2a41b9ecc9ee68c69399026df47ee945b7 --- scripts/manifest_fixer_test.py | 72 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'scripts/manifest_fixer_test.py') diff --git a/scripts/manifest_fixer_test.py b/scripts/manifest_fixer_test.py index 199b279cd..dad104a54 100755 --- a/scripts/manifest_fixer_test.py +++ b/scripts/manifest_fixer_test.py @@ -571,5 +571,77 @@ class AddTestOnlyApplicationTest(unittest.TestCase): output = self.run_test(manifest_input) self.assert_xml_equal(output, manifest_input) + +class SetMaxSdkVersionTest(unittest.TestCase): + """Unit tests for set_max_sdk_version function.""" + + def assert_xml_equal(self, output, expected): + self.assertEqual(ET.canonicalize(output), ET.canonicalize(expected)) + + def run_test(self, input_manifest, max_sdk_version): + doc = minidom.parseString(input_manifest) + manifest_fixer.set_max_sdk_version(doc, max_sdk_version) + output = io.StringIO() + manifest_fixer.write_xml(output, doc) + return output.getvalue() + + manifest_tmpl = ( + '\n' + '\n' + '%s' + '\n') + + def permission(self, max=None): + if max is None: + return ' ' + return ' \n' % max + + def uses_permission(self, max=None): + if max is None: + return ' ' + return ' \n' % max + + def test_permission_no_max_sdk_version(self): + """Tests if permission has no maxSdkVersion attribute""" + manifest_input = self.manifest_tmpl % self.permission() + expected = self.manifest_tmpl % self.permission() + output = self.run_test(manifest_input, '9000') + self.assert_xml_equal(output, expected) + + def test_permission_max_sdk_version_changed(self): + """Tests if permission maxSdkVersion attribute is set to current""" + manifest_input = self.manifest_tmpl % self.permission('current') + expected = self.manifest_tmpl % self.permission(9000) + output = self.run_test(manifest_input, '9000') + self.assert_xml_equal(output, expected) + + def test_permission_max_sdk_version_not_changed(self): + """Tests if permission maxSdkVersion attribute is not set to current""" + manifest_input = self.manifest_tmpl % self.permission(30) + expected = self.manifest_tmpl % self.permission(30) + output = self.run_test(manifest_input, '9000') + self.assert_xml_equal(output, expected) + + def test_uses_permission_no_max_sdk_version(self): + """Tests if uses-permission has no maxSdkVersion attribute""" + manifest_input = self.manifest_tmpl % self.uses_permission() + expected = self.manifest_tmpl % self.uses_permission() + output = self.run_test(manifest_input, '9000') + self.assert_xml_equal(output, expected) + + def test_uses_permission_max_sdk_version_changed(self): + """Tests if uses-permission maxSdkVersion attribute is set to current""" + manifest_input = self.manifest_tmpl % self.uses_permission('current') + expected = self.manifest_tmpl % self.uses_permission(9000) + output = self.run_test(manifest_input, '9000') + self.assert_xml_equal(output, expected) + + def test_uses_permission_max_sdk_version_not_changed(self): + """Tests if uses-permission maxSdkVersion attribute is not set to current""" + manifest_input = self.manifest_tmpl % self.uses_permission(30) + expected = self.manifest_tmpl % self.uses_permission(30) + output = self.run_test(manifest_input, '9000') + self.assert_xml_equal(output, expected) + if __name__ == '__main__': unittest.main(verbosity=2) -- cgit v1.2.3-59-g8ed1b