diff options
author | 2021-08-25 20:01:17 +0000 | |
---|---|---|
committer | 2021-09-08 03:59:40 +0000 | |
commit | f880742582a2876080427fcebb1b2c94787c4e24 (patch) | |
tree | 8f287bdcbe1a7d72cac95d9062ff4108daefebfe /scripts/manifest_check_test.py | |
parent | 7c16dabfa595cfe38b99c5b0f92aca6eec440de0 (diff) |
Apply pylint to scripts/manifest_check*.py
1. Run pyformat scripts/<script>.py -s 4 --force_quote_type
none -i to fix formatting
2. Annotate #pylint: disable, where straightforward fix is not available
Test: m manifest_check_test
Test: pylint --rcfile tools/repohooks/tools/pylintrc
build/soong/scripts/manifest_check.py
build/soong/scripts/manifest_check_test.py
Bug: 195738175
Change-Id: I9af498c4abd6ac9f8b9df4f93cbdd4424eacff8e
Diffstat (limited to 'scripts/manifest_check_test.py')
-rwxr-xr-x | scripts/manifest_check_test.py | 397 |
1 files changed, 215 insertions, 182 deletions
diff --git a/scripts/manifest_check_test.py b/scripts/manifest_check_test.py index e3e8ac468..3be7a30bf 100755 --- a/scripts/manifest_check_test.py +++ b/scripts/manifest_check_test.py @@ -26,202 +26,235 @@ sys.dont_write_bytecode = True def uses_library_xml(name, attr=''): - return '<uses-library android:name="%s"%s />' % (name, attr) + return '<uses-library android:name="%s"%s />' % (name, attr) def required_xml(value): - return ' android:required="%s"' % ('true' if value else 'false') + return ' android:required="%s"' % ('true' if value else 'false') def uses_library_apk(name, sfx=''): - return "uses-library%s:'%s'" % (sfx, name) + return "uses-library%s:'%s'" % (sfx, name) def required_apk(value): - return '' if value else '-not-required' + return '' if value else '-not-required' class EnforceUsesLibrariesTest(unittest.TestCase): - """Unit tests for add_extract_native_libs function.""" - - def run_test(self, xml, apk, uses_libraries=[], optional_uses_libraries=[]): - doc = minidom.parseString(xml) - try: - relax = False - manifest_check.enforce_uses_libraries(doc, uses_libraries, - optional_uses_libraries, relax, False, 'path/to/X/AndroidManifest.xml') - manifest_check.enforce_uses_libraries(apk, uses_libraries, - optional_uses_libraries, relax, True, 'path/to/X/X.apk') - return True - except manifest_check.ManifestMismatchError: - return False - - xml_tmpl = ( - '<?xml version="1.0" encoding="utf-8"?>\n' - '<manifest xmlns:android="http://schemas.android.com/apk/res/android">\n' - ' <application>\n' - ' %s\n' - ' </application>\n' - '</manifest>\n') - - apk_tmpl = ( - "package: name='com.google.android.something' versionCode='100'\n" - "sdkVersion:'29'\n" - "targetSdkVersion:'29'\n" - "uses-permission: name='android.permission.ACCESS_NETWORK_STATE'\n" - "%s\n" - "densities: '160' '240' '320' '480' '640' '65534") - - def test_uses_library(self): - xml = self.xml_tmpl % (uses_library_xml('foo')) - apk = self.apk_tmpl % (uses_library_apk('foo')) - matches = self.run_test(xml, apk, uses_libraries=['foo']) - self.assertTrue(matches) - - def test_uses_library_required(self): - xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(True))) - apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(True))) - matches = self.run_test(xml, apk, uses_libraries=['foo']) - self.assertTrue(matches) - - def test_optional_uses_library(self): - xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(False))) - apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(False))) - matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) - self.assertTrue(matches) - - def test_expected_uses_library(self): - xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(False))) - apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(False))) - matches = self.run_test(xml, apk, uses_libraries=['foo']) - self.assertFalse(matches) - - def test_expected_optional_uses_library(self): - xml = self.xml_tmpl % (uses_library_xml('foo')) - apk = self.apk_tmpl % (uses_library_apk('foo')) - matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) - self.assertFalse(matches) - - def test_missing_uses_library(self): - xml = self.xml_tmpl % ('') - apk = self.apk_tmpl % ('') - matches = self.run_test(xml, apk, uses_libraries=['foo']) - self.assertFalse(matches) - - def test_missing_optional_uses_library(self): - xml = self.xml_tmpl % ('') - apk = self.apk_tmpl % ('') - matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) - self.assertFalse(matches) - - def test_extra_uses_library(self): - xml = self.xml_tmpl % (uses_library_xml('foo')) - apk = self.apk_tmpl % (uses_library_xml('foo')) - matches = self.run_test(xml, apk) - self.assertFalse(matches) - - def test_extra_optional_uses_library(self): - xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(False))) - apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(False))) - matches = self.run_test(xml, apk) - self.assertFalse(matches) - - def test_multiple_uses_library(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo'), - uses_library_xml('bar')])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo'), - uses_library_apk('bar')])) - matches = self.run_test(xml, apk, uses_libraries=['foo', 'bar']) - self.assertTrue(matches) - - def test_multiple_optional_uses_library(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo', required_xml(False)), - uses_library_xml('bar', required_xml(False))])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo', required_apk(False)), - uses_library_apk('bar', required_apk(False))])) - matches = self.run_test(xml, apk, optional_uses_libraries=['foo', 'bar']) - self.assertTrue(matches) - - def test_order_uses_library(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo'), - uses_library_xml('bar')])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo'), - uses_library_apk('bar')])) - matches = self.run_test(xml, apk, uses_libraries=['bar', 'foo']) - self.assertFalse(matches) - - def test_order_optional_uses_library(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo', required_xml(False)), - uses_library_xml('bar', required_xml(False))])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo', required_apk(False)), - uses_library_apk('bar', required_apk(False))])) - matches = self.run_test(xml, apk, optional_uses_libraries=['bar', 'foo']) - self.assertFalse(matches) - - def test_duplicate_uses_library(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo'), - uses_library_xml('foo')])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo'), - uses_library_apk('foo')])) - matches = self.run_test(xml, apk, uses_libraries=['foo']) - self.assertTrue(matches) - - def test_duplicate_optional_uses_library(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo', required_xml(False)), - uses_library_xml('foo', required_xml(False))])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo', required_apk(False)), - uses_library_apk('foo', required_apk(False))])) - matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) - self.assertTrue(matches) - - def test_mixed(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo'), - uses_library_xml('bar', required_xml(False))])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo'), - uses_library_apk('bar', required_apk(False))])) - matches = self.run_test(xml, apk, uses_libraries=['foo'], - optional_uses_libraries=['bar']) - self.assertTrue(matches) - - def test_mixed_with_namespace(self): - xml = self.xml_tmpl % ('\n'.join([uses_library_xml('foo'), - uses_library_xml('bar', required_xml(False))])) - apk = self.apk_tmpl % ('\n'.join([uses_library_apk('foo'), - uses_library_apk('bar', required_apk(False))])) - matches = self.run_test(xml, apk, uses_libraries=['//x/y/z:foo'], - optional_uses_libraries=['//x/y/z:bar']) - self.assertTrue(matches) + """Unit tests for add_extract_native_libs function.""" + + def run_test(self, xml, apk, uses_libraries=[], optional_uses_libraries=[]): #pylint: disable=dangerous-default-value + doc = minidom.parseString(xml) + try: + relax = False + manifest_check.enforce_uses_libraries( + doc, uses_libraries, optional_uses_libraries, relax, False, + 'path/to/X/AndroidManifest.xml') + manifest_check.enforce_uses_libraries(apk, uses_libraries, + optional_uses_libraries, + relax, True, + 'path/to/X/X.apk') + return True + except manifest_check.ManifestMismatchError: + return False + + xml_tmpl = ( + '<?xml version="1.0" encoding="utf-8"?>\n<manifest ' + 'xmlns:android="http://schemas.android.com/apk/res/android">\n ' + '<application>\n %s\n </application>\n</manifest>\n') + + apk_tmpl = ( + "package: name='com.google.android.something' versionCode='100'\n" + "sdkVersion:'29'\n" + "targetSdkVersion:'29'\n" + "uses-permission: name='android.permission.ACCESS_NETWORK_STATE'\n" + '%s\n' + "densities: '160' '240' '320' '480' '640' '65534") + + def test_uses_library(self): + xml = self.xml_tmpl % (uses_library_xml('foo')) + apk = self.apk_tmpl % (uses_library_apk('foo')) + matches = self.run_test(xml, apk, uses_libraries=['foo']) + self.assertTrue(matches) + + def test_uses_library_required(self): + xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(True))) + apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(True))) + matches = self.run_test(xml, apk, uses_libraries=['foo']) + self.assertTrue(matches) + + def test_optional_uses_library(self): + xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(False))) + apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(False))) + matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) + self.assertTrue(matches) + + def test_expected_uses_library(self): + xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(False))) + apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(False))) + matches = self.run_test(xml, apk, uses_libraries=['foo']) + self.assertFalse(matches) + + def test_expected_optional_uses_library(self): + xml = self.xml_tmpl % (uses_library_xml('foo')) + apk = self.apk_tmpl % (uses_library_apk('foo')) + matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) + self.assertFalse(matches) + + def test_missing_uses_library(self): + xml = self.xml_tmpl % ('') + apk = self.apk_tmpl % ('') + matches = self.run_test(xml, apk, uses_libraries=['foo']) + self.assertFalse(matches) + + def test_missing_optional_uses_library(self): + xml = self.xml_tmpl % ('') + apk = self.apk_tmpl % ('') + matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) + self.assertFalse(matches) + + def test_extra_uses_library(self): + xml = self.xml_tmpl % (uses_library_xml('foo')) + apk = self.apk_tmpl % (uses_library_xml('foo')) + matches = self.run_test(xml, apk) + self.assertFalse(matches) + + def test_extra_optional_uses_library(self): + xml = self.xml_tmpl % (uses_library_xml('foo', required_xml(False))) + apk = self.apk_tmpl % (uses_library_apk('foo', required_apk(False))) + matches = self.run_test(xml, apk) + self.assertFalse(matches) + + def test_multiple_uses_library(self): + xml = self.xml_tmpl % ('\n'.join( + [uses_library_xml('foo'), + uses_library_xml('bar')])) + apk = self.apk_tmpl % ('\n'.join( + [uses_library_apk('foo'), + uses_library_apk('bar')])) + matches = self.run_test(xml, apk, uses_libraries=['foo', 'bar']) + self.assertTrue(matches) + + def test_multiple_optional_uses_library(self): + xml = self.xml_tmpl % ('\n'.join([ + uses_library_xml('foo', required_xml(False)), + uses_library_xml('bar', required_xml(False)) + ])) + apk = self.apk_tmpl % ('\n'.join([ + uses_library_apk('foo', required_apk(False)), + uses_library_apk('bar', required_apk(False)) + ])) + matches = self.run_test( + xml, apk, optional_uses_libraries=['foo', 'bar']) + self.assertTrue(matches) + + def test_order_uses_library(self): + xml = self.xml_tmpl % ('\n'.join( + [uses_library_xml('foo'), + uses_library_xml('bar')])) + apk = self.apk_tmpl % ('\n'.join( + [uses_library_apk('foo'), + uses_library_apk('bar')])) + matches = self.run_test(xml, apk, uses_libraries=['bar', 'foo']) + self.assertFalse(matches) + + def test_order_optional_uses_library(self): + xml = self.xml_tmpl % ('\n'.join([ + uses_library_xml('foo', required_xml(False)), + uses_library_xml('bar', required_xml(False)) + ])) + apk = self.apk_tmpl % ('\n'.join([ + uses_library_apk('foo', required_apk(False)), + uses_library_apk('bar', required_apk(False)) + ])) + matches = self.run_test( + xml, apk, optional_uses_libraries=['bar', 'foo']) + self.assertFalse(matches) + + def test_duplicate_uses_library(self): + xml = self.xml_tmpl % ('\n'.join( + [uses_library_xml('foo'), + uses_library_xml('foo')])) + apk = self.apk_tmpl % ('\n'.join( + [uses_library_apk('foo'), + uses_library_apk('foo')])) + matches = self.run_test(xml, apk, uses_libraries=['foo']) + self.assertTrue(matches) + + def test_duplicate_optional_uses_library(self): + xml = self.xml_tmpl % ('\n'.join([ + uses_library_xml('foo', required_xml(False)), + uses_library_xml('foo', required_xml(False)) + ])) + apk = self.apk_tmpl % ('\n'.join([ + uses_library_apk('foo', required_apk(False)), + uses_library_apk('foo', required_apk(False)) + ])) + matches = self.run_test(xml, apk, optional_uses_libraries=['foo']) + self.assertTrue(matches) + + def test_mixed(self): + xml = self.xml_tmpl % ('\n'.join([ + uses_library_xml('foo'), + uses_library_xml('bar', required_xml(False)) + ])) + apk = self.apk_tmpl % ('\n'.join([ + uses_library_apk('foo'), + uses_library_apk('bar', required_apk(False)) + ])) + matches = self.run_test( + xml, apk, uses_libraries=['foo'], optional_uses_libraries=['bar']) + self.assertTrue(matches) + + def test_mixed_with_namespace(self): + xml = self.xml_tmpl % ('\n'.join([ + uses_library_xml('foo'), + uses_library_xml('bar', required_xml(False)) + ])) + apk = self.apk_tmpl % ('\n'.join([ + uses_library_apk('foo'), + uses_library_apk('bar', required_apk(False)) + ])) + matches = self.run_test( + xml, + apk, + uses_libraries=['//x/y/z:foo'], + optional_uses_libraries=['//x/y/z:bar']) + self.assertTrue(matches) class ExtractTargetSdkVersionTest(unittest.TestCase): - def run_test(self, xml, apk, version): - doc = minidom.parseString(xml) - v = manifest_check.extract_target_sdk_version(doc, is_apk=False) - self.assertEqual(v, version) - v = manifest_check.extract_target_sdk_version(apk, is_apk=True) - self.assertEqual(v, version) - - xml_tmpl = ( - '<?xml version="1.0" encoding="utf-8"?>\n' - '<manifest xmlns:android="http://schemas.android.com/apk/res/android">\n' - ' <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="%s" />\n' - '</manifest>\n') - - apk_tmpl = ( - "package: name='com.google.android.something' versionCode='100'\n" - "sdkVersion:'28'\n" - "targetSdkVersion:'%s'\n" - "uses-permission: name='android.permission.ACCESS_NETWORK_STATE'\n") - - def test_targert_sdk_version_28(self): - xml = self.xml_tmpl % "28" - apk = self.apk_tmpl % "28" - self.run_test(xml, apk, "28") - - def test_targert_sdk_version_29(self): - xml = self.xml_tmpl % "29" - apk = self.apk_tmpl % "29" - self.run_test(xml, apk, "29") + + def run_test(self, xml, apk, version): + doc = minidom.parseString(xml) + v = manifest_check.extract_target_sdk_version(doc, is_apk=False) + self.assertEqual(v, version) + v = manifest_check.extract_target_sdk_version(apk, is_apk=True) + self.assertEqual(v, version) + + xml_tmpl = ( + '<?xml version="1.0" encoding="utf-8"?>\n<manifest ' + 'xmlns:android="http://schemas.android.com/apk/res/android">\n ' + '<uses-sdk android:minSdkVersion="28" android:targetSdkVersion="%s" ' + '/>\n</manifest>\n') + + apk_tmpl = ( + "package: name='com.google.android.something' versionCode='100'\n" + "sdkVersion:'28'\n" + "targetSdkVersion:'%s'\n" + "uses-permission: name='android.permission.ACCESS_NETWORK_STATE'\n") + + def test_targert_sdk_version_28(self): + xml = self.xml_tmpl % '28' + apk = self.apk_tmpl % '28' + self.run_test(xml, apk, '28') + + def test_targert_sdk_version_29(self): + xml = self.xml_tmpl % '29' + apk = self.apk_tmpl % '29' + self.run_test(xml, apk, '29') + if __name__ == '__main__': - unittest.main(verbosity=2) + unittest.main(verbosity=2) |