def manifest(self): """The manifest of the AndroidLibrary, if one exists.""" # Libraries may not have a manifest, so self.manifest can be None for android_libraries. if self._manifest_file is None: return None else: manifest_path = os.path.join(self._spec_path, self._manifest_file) return AndroidManifestParser.parse_manifest(manifest_path)
def manifest(self): """Return an AndroidManifest object made from a manifest by AndroidManifestParser.""" # If there was no 'manifest' field in the BUILD file, try to find one with the default value. if self._manifest_file is None: self._manifest_file = 'AndroidManifest.xml' manifest_path = os.path.join(self._spec_path, self._manifest_file) if not os.path.isfile(manifest_path): raise TargetDefinitionException(self, "There is no AndroidManifest.xml at path {0}. Please " "declare a 'manifest' field with its relative " "path.".format(manifest_path)) return AndroidManifestParser.parse_manifest(manifest_path)
def manifest(self): """Return an AndroidManifest object made from a manifest by AndroidManifestParser.""" # For both gradle and ant layouts, AndroidManifest is conventionally at top-level. # I would recommend users still explicitly define a 'manifest' in android BUILD files. if self._manifest is None: # If there was no 'manifest' field in the BUILD file, try to find one with the default value. if self._manifest_path is None: self._manifest_path = 'AndroidManifest.xml' manifest = os.path.join(self._spec_path, self._manifest_path) if not os.path.isfile(manifest): raise TargetDefinitionException( self, "There is no AndroidManifest.xml at path {0}. Please " "declare a 'manifest' field with its relative " "path.".format(manifest)) self._manifest = AndroidManifestParser.parse_manifest(manifest) return self._manifest
def manifest(self): """Return an AndroidManifest object made from a manifest by AndroidManifestParser.""" # For both gradle and ant layouts, AndroidManifest is conventionally at top-level. # I would recommend users still explicitly define a 'manifest' in android BUILD files. if self._manifest is None: # If there was no 'manifest' field in the BUILD file, try to find one with the default value. if self._manifest_path is None: self._manifest_path = "AndroidManifest.xml" manifest = os.path.join(self._spec_path, self._manifest_path) if not os.path.isfile(manifest): raise TargetDefinitionException( self, "There is no AndroidManifest.xml at path {0}. Please " "declare a 'manifest' field with its relative " "path.".format(manifest), ) self._manifest = AndroidManifestParser.parse_manifest(manifest) return self._manifest
def test_missing_whole_targetsdk(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(android_attribute='unrelated:cola') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.target_sdk, '19')
def test_no_target_sdk_value(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(android_attribute='android:bad_value') as xml: parsed = AndroidManifestParser.parse_manifest(xml) self.assertEqual(parsed.target_sdk, '19')
def test_target_sdk(self): with self.xml_file() as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.target_sdk, '19')
def test_missing_package_attribute(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(package_attribute='bad_value') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'com.pants.examples.hello')
def test_package_name(self): with self.xml_file() as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'com.pants.examples.hello')
def test_parse_manifest(self): with self.xml_file() as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.path, xml)
def test_no_target_sdk_value(self): with self.xml_file(android_attribute='android:bad_value') as xml: parsed = AndroidManifestParser.parse_manifest(xml) self.assertIsNone(parsed.target_sdk)
def test_no_android_name_attribute(self): with self.xml_file(android_name_attribute='android:grape') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.app_name, None)
def test_application_name(self): with self.xml_file() as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.app_name, 'org.pantsbuild.example.hello.HelloWorld')
def test_missing_package_attribute(self): with self.xml_file(package_attribute='bad_value') as xml: with self.assertRaises(AndroidManifestParser.BadManifestError): AndroidManifestParser.parse_manifest(xml)
def test_missing_whole_targetsdk(self): with self.xml_file(android_attribute='unrelated:cola') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertIsNone(manifest.target_sdk)
def test_no_android_part(self): with self.xml_file( android_attribute='unrelated:targetSdkVersion') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'org.pantsbuild.example.hello')
def test_no_activity_element(self): with self.xml_file(activity_element='root_beer') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.app_name, None)
def test_missing_manifest_element(self): with self.xml_file(manifest_element='some_other_element') as xml: with self.assertRaises(AndroidManifestParser.BadManifestError): AndroidManifestParser.parse_manifest(xml)
def test_no_uses_sdk_element(self): with self.xml_file(uses_sdk_element='something-random') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertIsNone(manifest.target_sdk)
def test_bad_parse_manifest(self): with self.assertRaises(AndroidManifestParser.BadManifestError): xml = '/no/file/here' AndroidManifestParser.parse_manifest(xml)
def test_no_attribute_tag_match(self): # With attribute:value, the attribute must be declared. We declare unrelated on ln 3 of the xml. with self.xml_file(android_name_attribute='unrelated:match') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.app_name, None)
def test_package_name(self): with self.xml_file() as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'org.pantsbuild.example.hello')
def test_missing_manifest_element(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(manifest_element='some_other_element') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'org.pantsbuild.example.hello')
def test_missing_package_attribute(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(package_attribute='bad_value') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'org.pantsbuild.example.hello')
def test_missing_manifest_element(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(manifest_element='some_other_element') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'com.pants.examples.hello')
def test_weird_package_name(self): # Should accept unexpected package names, the info gets verified in classes that consume it. with self.xml_file(package_value='cola') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.package_name, 'cola')
def test_no_uses_sdk_element(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(uses_sdk_element='something-random') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.target_sdk, '19')
def test_no_android_part(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file( android_attribute='unrelated:targetSdkVersion') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.target_sdk, '19')
def test_application_name(self): with self.xml_file() as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.app_name, 'com.pants.examples.hello.HelloWorld')
def test_no_android_part(self): with self.assertRaises(AndroidManifestParser.BadManifestError): with self.xml_file(android_attribute='unrelated:targetSdkVersion') as xml: manifest = AndroidManifestParser.parse_manifest(xml) self.assertEqual(manifest.target_sdk, '19')