From 75d65f360c18806e683aed87679ce5bcc52823d4 Mon Sep 17 00:00:00 2001 From: Gurpreet Singh Date: Mon, 24 Jan 2022 17:44:05 +0000 Subject: Add testOnly attribute to AndroidManifest file of apex_test If the build file contains the apex_test module, add the testOnly attribute to the application element of the corresponding AndroidManifest file and set its value to true. If the testOnly attribute is already present and has value false, then do nothing. Tests added in manifest_fixer_test.py to check if the updated AndroidManifest file has the testOnly attribute set to true or not. Bug: 213310150 Test: atest --host manifest_fixer_test Test: m nothing Test: manually checked the AndroidManifest file generated Change-Id: I36247dbe0261c342d451a4422c314fd8fe0c2369 --- scripts/manifest_fixer_test.py | 45 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'scripts/manifest_fixer_test.py') diff --git a/scripts/manifest_fixer_test.py b/scripts/manifest_fixer_test.py index f6fcaafe5..199b279cd 100755 --- a/scripts/manifest_fixer_test.py +++ b/scripts/manifest_fixer_test.py @@ -521,12 +521,55 @@ class AddNoCodeApplicationTest(unittest.TestCase): self.assert_xml_equal(output, manifest_input) def test_has_application_has_code_true(self): - """ Do nothing if there's already an application elemeent even if its + """ Do nothing if there's already an application element even if its hasCode attribute is true. """ manifest_input = self.manifest_tmpl % ' \n' output = self.run_test(manifest_input) self.assert_xml_equal(output, manifest_input) +class AddTestOnlyApplicationTest(unittest.TestCase): + """Unit tests for set_test_only_flag_to_true function.""" + + def assert_xml_equal(self, output, expected): + self.assertEqual(ET.canonicalize(output), ET.canonicalize(expected)) + + def run_test(self, input_manifest): + doc = minidom.parseString(input_manifest) + manifest_fixer.set_test_only_flag_to_true(doc) + output = io.StringIO() + manifest_fixer.write_xml(output, doc) + return output.getvalue() + + manifest_tmpl = ( + '\n' + '\n' + '%s' + '\n') + + def test_no_application(self): + manifest_input = self.manifest_tmpl % '' + expected = self.manifest_tmpl % ' \n' + output = self.run_test(manifest_input) + self.assert_xml_equal(output, expected) + + def test_has_application_no_test_only(self): + manifest_input = self.manifest_tmpl % ' \n' + expected = self.manifest_tmpl % ' \n' + output = self.run_test(manifest_input) + self.assert_xml_equal(output, expected) + + def test_has_application_test_only_true(self): + """ If there's already an application element.""" + manifest_input = self.manifest_tmpl % ' \n' + output = self.run_test(manifest_input) + self.assert_xml_equal(output, manifest_input) + + def test_has_application_test_only_false(self): + """ If there's already an application element with the testOnly attribute as false.""" + manifest_input = self.manifest_tmpl % ' \n' + output = self.run_test(manifest_input) + self.assert_xml_equal(output, manifest_input) + if __name__ == '__main__': unittest.main(verbosity=2) -- cgit v1.2.3-59-g8ed1b