diff options
author | 2022-05-17 20:21:50 +0000 | |
---|---|---|
committer | 2022-06-28 22:07:23 +0000 | |
commit | 5a082f9a3310a425115061578ed8955ff342ef56 (patch) | |
tree | ca0ed9c72c744035e289b862697798a2f46ffac9 /scripts/manifest_fixer_test.py | |
parent | 78ce8c23def25e30fba5e2cdb124ad3f0409751c (diff) |
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
Diffstat (limited to 'scripts/manifest_fixer_test.py')
-rwxr-xr-x | scripts/manifest_fixer_test.py | 72 |
1 files changed, 72 insertions, 0 deletions
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 = ( + '<?xml version="1.0" encoding="utf-8"?>\n' + '<manifest xmlns:android="http://schemas.android.com/apk/res/android">\n' + '%s' + '</manifest>\n') + + def permission(self, max=None): + if max is None: + return ' <permission/>' + return ' <permission android:maxSdkVersion="%s"/>\n' % max + + def uses_permission(self, max=None): + if max is None: + return ' <uses-permission/>' + return ' <uses-permission android:maxSdkVersion="%s"/>\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) |