def test_caching_multiple_sdks(self): with distribution() as first_sdk_path: with distribution() as second_sdk_path: first_sdk_instance = AndroidDistribution.cached(first_sdk_path) second_sdk_instance = AndroidDistribution.cached(second_sdk_path) self.assertEquals(AndroidDistribution._CACHED_SDK[first_sdk_path], first_sdk_instance) self.assertEquals(AndroidDistribution._CACHED_SDK[second_sdk_path], second_sdk_instance)
def test_register_copy_but_no_tool(self): with distribution() as sdk: with temporary_dir() as workdir: android_sdk = AndroidDistribution.cached(sdk) android_jar = os.path.join('platforms', 'android-19', 'no.jar') with self.assertRaises(AndroidDistribution.DistributionError): android_sdk.register_android_tool(android_jar, workdir=workdir)
def test_register_copy_is_validated(self): with distribution() as sdk: with temporary_dir() as workdir: android_sdk = AndroidDistribution.cached(sdk) android_jar = os.path.join('platforms', 'android-19', 'android.jar') android_sdk.register_android_tool(android_jar, workdir=workdir) self.assertIn(android_jar, android_sdk._validated_tools)
def test_register_tool_returns_file(self): with distribution() as sdk: with temporary_dir() as workdir: android_sdk = AndroidDistribution.cached(sdk) android_jar = os.path.join('platforms', 'android-19', 'android.jar') android_sdk.register_android_tool(android_jar, workdir=workdir) self.assertEquals(os.path.isfile(android_sdk._validated_tools[android_jar]), True)
def test_register_tool_no_permission(self): with distribution() as sdk: with temporary_dir() as workdir: os.chmod(workdir, 0o400) android_sdk = AndroidDistribution.cached(sdk) android_jar = os.path.join('platforms', 'android-19', 'android.jar') with self.assertRaises(AndroidDistribution.DistributionError): android_sdk.register_android_tool(android_jar, workdir=workdir)
def test_locate_alternative_variables(self): # Test that alternative environmental variables are accepted. with distribution() as sdk: with self.env(ANDROID_SDK=sdk): dist = AndroidDistribution.locate_sdk_path() self.assertEquals(dist._sdk_path, sdk)
def test_locate_sdk_path(self): with distribution() as sdk: with self.env(ANDROID_HOME=sdk): dist = AndroidDistribution.locate_sdk_path() self.assertEquals(dist._sdk_path, sdk)
def test_locate_no_sdk_on_path(self): with distribution() as sdk: with self.env(ANDROooooD_HOME=sdk): with self.assertRaises(AndroidDistribution.DistributionError): AndroidDistribution.locate_sdk_path()
def test_passing_sdk_path(self): with distribution() as sdk: android_sdk = AndroidDistribution(sdk_path=sdk) aapt = os.path.join(sdk, 'build-tools', '19.1.0', 'aapt') android_tool = android_sdk.register_android_tool(aapt) self.assertEquals(android_tool, os.path.join(sdk, aapt))
def test_get_bad_tool_path(self): with distribution() as sdk: android_sdk = AndroidDistribution.cached(sdk) android_jar = os.path.join('platforms', 'android-19', 'no.jar') with self.assertRaises(AndroidDistribution.DistributionError): android_sdk._get_tool_path(android_jar)
def test_validate_bad_path(self): # The SDK path is not validated until the tool is registered. sdk = os.path.join('/no', 'sdk', 'here') android_sdk = AndroidDistribution.cached(sdk) self.assertEquals(sdk, android_sdk._sdk_path)
def test_empty_sdk_path(self): # Shows that an AndroidDistribution can be created as long as an sdk path is declared. with temporary_dir() as sdk: android_sdk = AndroidDistribution.cached(sdk) self.assertEquals(android_sdk._sdk_path, sdk)
def test_validated_tools(self): with distribution() as sdk: android_sdk = AndroidDistribution.cached(sdk) aapt = os.path.join('build-tools', '19.1.0', 'aapt') android_sdk.register_android_tool(aapt) self.assertIn(aapt, android_sdk._validated_tools)
def test_register_nonexistent_android_tool(self): with distribution() as sdk: android_sdk = AndroidDistribution.cached(sdk) with self.assertRaises(AndroidDistribution.DistributionError): android_sdk.register_android_tool(os.path.join('build-tools', '19.1.0', 'random_tool'))
def test_register_android_tool_bad_sdk(self): sdk = os.path.join('/no', 'sdk', 'here') android_sdk = AndroidDistribution.cached(sdk) aapt = os.path.join('build-tools', '19.1.0', 'aapt') with self.assertRaises(AndroidDistribution.DistributionError): android_sdk.register_android_tool(aapt)
def test_register_android_tool(self): with distribution() as sdk: android_sdk = AndroidDistribution.cached(sdk) aapt = os.path.join('build-tools', '19.1.0', 'aapt') registered_aapt = android_sdk.register_android_tool(aapt) self.assertEquals(registered_aapt, os.path.join(sdk, aapt))
def test_sdk_path(self): with distribution() as sdk: android_sdk = AndroidDistribution.cached(sdk) self.assertEquals(sdk, android_sdk._sdk_path)
def test_get_tool_path(self): with distribution() as sdk: android_sdk = AndroidDistribution.cached(sdk) android_jar = os.path.join('platforms', 'android-19', 'android.jar') tool_path = android_sdk._get_tool_path(android_jar) self.assertEquals(tool_path, os.path.join(sdk, android_jar))
def test_sdk_path_is_none(self): with self.env() as sdk: with self.assertRaises(AndroidDistribution.DistributionError): AndroidDistribution.cached(sdk)
def android_sdk(self): """Instantiate an Android SDK distribution that provides tools to android tasks.""" return AndroidDistribution.cached(self._sdk_path)