Touch up manifest if there's no source code.
The new package manager behavior requires packages without source code to have an application element with hasCode attribute set to false in their manifest. With this change, Soong can now automatically insert one for codeless apps. Test: app_test.go, manifest_fixer_test.py Fixes: 124375490 Change-Id: Ied89a8d07c63805ab910859a4f7c45fc1c60bb73
This commit is contained in:
@@ -424,5 +424,47 @@ class AddExtractNativeLibsTest(unittest.TestCase):
|
||||
self.assertRaises(RuntimeError, self.run_test, manifest_input, False)
|
||||
|
||||
|
||||
class AddNoCodeApplicationTest(unittest.TestCase):
|
||||
"""Unit tests for set_has_code_to_false function."""
|
||||
|
||||
def run_test(self, input_manifest):
|
||||
doc = minidom.parseString(input_manifest)
|
||||
manifest_fixer.set_has_code_to_false(doc)
|
||||
output = StringIO.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 test_no_application(self):
|
||||
manifest_input = self.manifest_tmpl % ''
|
||||
expected = self.manifest_tmpl % ' <application android:hasCode="false"/>\n'
|
||||
output = self.run_test(manifest_input)
|
||||
self.assertEqual(output, expected)
|
||||
|
||||
def test_has_application_no_has_code(self):
|
||||
manifest_input = self.manifest_tmpl % ' <application/>\n'
|
||||
expected = self.manifest_tmpl % ' <application android:hasCode="false"/>\n'
|
||||
output = self.run_test(manifest_input)
|
||||
self.assertEqual(output, expected)
|
||||
|
||||
def test_has_application_has_code_false(self):
|
||||
""" Do nothing if there's already an application elemeent. """
|
||||
manifest_input = self.manifest_tmpl % ' <application android:hasCode="false"/>\n'
|
||||
output = self.run_test(manifest_input)
|
||||
self.assertEqual(output, manifest_input)
|
||||
|
||||
def test_has_application_has_code_true(self):
|
||||
""" Do nothing if there's already an application elemeent even if its
|
||||
hasCode attribute is true. """
|
||||
manifest_input = self.manifest_tmpl % ' <application android:hasCode="true"/>\n'
|
||||
output = self.run_test(manifest_input)
|
||||
self.assertEqual(output, manifest_input)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
||||
|
Reference in New Issue
Block a user