def testMergeToCreateValidManifest(self): self.maxDiff = None merger = merge_manifests.MergeManifests( (INVALID_MERGER_MANIFEST, 'INVALID_MANIFEST'), [(SECOND_MANIFEST, 'SECOND_MANIFEST')], ['all']) result = merger.Merge() expected = xml.dom.minidom.parseString(VALID_MANIFEST).toprettyxml() self.assertEquals(Reformat(expected), Reformat(result))
def testExcludeAllPermissions(self): merger = merge_manifests.MergeManifests( (FIRST_MANIFEST, 'FIRST_MANIFEST'), [(SECOND_MANIFEST, 'SECOND_MANIFEST'), (THIRD_MANIFEST, 'THIRD_MANIFEST')], ['all']) result = merger.Merge() self.assertFalse('android.permission.READ_LOGS' in result) self.assertFalse('android.permission.INTERNET' in result) self.assertTrue('android.permission.ACCESS_COARSE_LOCATION' in result)
def testMerge(self): self.maxDiff = None merger = merge_manifests.MergeManifests( (FIRST_MANIFEST, 'FIRST_MANIFEST'), [(SECOND_MANIFEST, 'SECOND_MANIFEST'), (THIRD_MANIFEST, 'THIRD_MANIFEST')], ['android.permission.READ_LOGS']) result = merger.Merge() expected = xml.dom.minidom.parseString(MANUALLY_MERGED).toprettyxml() self.assertEquals(Reformat(expected), Reformat(result))
def testActivityAliasesAreAlwaysLast(self): merger = merge_manifests.MergeManifests( (FIRST_MANIFEST, 'FIRST_MANIFEST'), [(SECOND_MANIFEST, 'SECOND_MANIFEST'), (ALIAS_MANIFEST, 'THIRD_MANIFEST')], ['all']) result = merger.Merge() last_occurence_of_activity = result.rfind('<activity ') first_occurence_of_alias = result.find('<activity-alias ') self.assertLess(last_occurence_of_activity, first_occurence_of_alias, msg='First activity-alias is not after the last activity!')
def testMergeConflictingNamespaces(self): self.maxDiff = None merger = merge_manifests.MergeManifests( (MANIFEST_WITH_CONFLICTING_NAMESPACE, 'MANIFEST_WITH_CONFLICTING_NAMESPACE'), [(MANIFEST_WITH_EXTRA_NAMESPACE, 'MANIFEST_WITH_EXTRA_NAMESPACE')], ['all']) with self.assertRaisesRegexp( merge_manifests.MalformedManifestException, 'different values for namespace xmlns:tools'): merger.Merge()
def testUndefinedArgumentPlaceholder(self): bad_manifest = SECOND_MANIFEST.replace( '${packageName}', '${unknownPlaceHolder}') merger = merge_manifests.MergeManifests( (FIRST_MANIFEST, 'FIRST_MANIFEST'), [(bad_manifest, 'invalidManifest'), (THIRD_MANIFEST, 'THIRD_MANIFEST')]) try: merger.Merge() self.fail('merging manifests with unknown placeholders didn\'t fail') except merge_manifests.UndefinedPlaceholderException: pass
def testMergeWithNamespaces(self): self.maxDiff = None merger = merge_manifests.MergeManifests( (MANIFEST_WITHOUT_EXTRA_NAMESPACE, 'MANIFEST_WITHOUT_EXTRA_NAMESPACE'), [(MANIFEST_WITH_EXTRA_NAMESPACE, 'MANIFEST_WITH_EXTRA_NAMESPACE')], ['all']) result = merger.Merge() expected = xml.dom.minidom.parseString( MERGED_MANIFEST_WITH_EXTRA_NAMESPACE).toprettyxml() # Make sure the result is valid xml (not missing xmlns declarations) result_reparsed = xml.dom.minidom.parseString(result).toprettyxml() self.assertEquals(Reformat(expected), Reformat(result_reparsed))
def testMergeWithNoApplication(self): merger = merge_manifests.MergeManifests( (INVALID_MERGER_MANIFEST, 'INVALID_MERGER_MANIFEST'), [(INVALID_MERGEE_MANIFEST, 'INVALID_MERGEE_MANIFEST')], ['all']) merger.Merge()