def platform_added(app_name, platform, output, version=None): platform_string = str(platform) # Verify output assert 'Platform {0} successfully added'.format( platform_string) in output # Verify platform folder if platform == Platform.ANDROID: assert Folder.exists( TnsPaths.get_platforms_android_folder(app_name)) else: assert Folder.exists(TnsPaths.get_platforms_ios_folder(app_name)) # Verify package.json app_path = os.path.join(Settings.TEST_RUN_HOME, app_name) package_json = os.path.join(app_path, 'package.json') json = JsonUtils.read(package_json) if version is not None: if 'next' in version: assert json['nativescript'][ 'tns-' + platform_string]['version'] is not None if 'rc' in version: assert 'rc' in json['nativescript']['tns-' + platform_string]['version'] else: assert version in json['nativescript'][ 'tns-' + platform_string]['version'] else: assert json['nativescript']['tns-' + platform_string]['version'] is not None, \ 'tns-' + platform_string + ' not available in package.json of the app.'
def test_001_build_android(self): Tns.build_android(self.app_name) assert not File.exists( os.path.join(TnsPaths.get_platforms_android_folder(self.app_name), '*.plist')) assert not File.exists( os.path.join(TnsPaths.get_platforms_android_folder(self.app_name), '*.android.js')) assert not File.exists( os.path.join(TnsPaths.get_platforms_android_folder(self.app_name), '*.ios.js')) src = os.path.join(self.app_name, 'app', 'app.js') dest_1 = os.path.join(self.app_name, 'app', 'new.android.js') dest_2 = os.path.join(self.app_name, 'app', 'new.ios.js') File.copy(src, dest_1) File.copy(src, dest_2) result = Tns.build_android(self.app_name) assert "Gradle build..." in result.output, "Gradle build not called." assert result.output.count( "Gradle build...") == 1, "Only one gradle build is triggered." assert not File.exists( os.path.join(TnsPaths.get_platforms_android_folder(self.app_name), '*.plist')) assert not File.exists( os.path.join(TnsPaths.get_platforms_android_folder(self.app_name), '*.android.js')) assert not File.exists( os.path.join(TnsPaths.get_platforms_android_folder(self.app_name), '*.ios.js')) # Verify apk does not contain aar files apk_path = TnsPaths.get_apk_path(app_name=self.app_name, release=False) File.unzip(apk_path, self.temp_folder) # Clean META-INF folder. It contains com.android.support.... files which are expected to be there due to # https://github.com/NativeScript/nativescript-cli/pull/3923 Folder.clean(os.path.join(self.temp_folder, 'META-INF')) assert not File.pattern_exists(self.temp_folder, '*.aar') assert not File.pattern_exists(self.temp_folder, '*.plist') assert not File.pattern_exists(self.temp_folder, '*.android.*') assert not File.pattern_exists(self.temp_folder, '*.ios.*') # Verify app is built with android sdk 29 by default TnsAssert.string_in_android_manifest(apk_path, 'compileSdkVersion="29"') Folder.clean(self.temp_folder) # Verify incremental native build result = Tns.exec_command(command='build --clean', path=self.app_name, platform=Platform.ANDROID) assert "Gradle clean..." in result.output, "Gradle clean is not called." assert "Gradle build..." in result.output, "Gradle build is not called." assert result.output.count( "Gradle build...") == 1, "More than 1 gradle build is triggered."
def platform_removed(app_name, platform, output): platform_string = str(platform) # Verify output assert 'Platform {0} successfully removed'.format( platform_string) in output # Verify package.json app_path = TnsPaths.get_app_path(app_name) package_json = os.path.join(app_path, 'package.json') json = JsonUtils.read(package_json) assert not 'tns-' + platform_string in json if platform == Platform.ANDROID: assert not Folder.exists( TnsPaths.get_platforms_android_folder(app_name)) else: assert not Folder.exists( TnsPaths.get_platforms_ios_folder(app_name))
def platform_clean(app_name, platform=Platform.NONE, verify=True): platform_string = str(platform) command = 'platform clean ' + platform_string result = Tns.exec_command(command=command, path=app_name) if verify: assert "Platform {0} successfully removed".format( platform_string) in result.output assert "error" not in result.output if platform is Platform.ANDROID: assert Folder.exists( TnsPaths.get_platforms_android_folder(app_name)) if platform is Platform.IOS: assert Folder.exists( TnsPaths.get_platforms_ios_folder(app_name)) assert "Platform {0} successfully added".format( platform_string) in result.output package_json = os.path.join(TnsPaths.get_app_path(app_name), 'package.json') json = JsonUtils.read(package_json) assert json['nativescript']['tns-' + platform_string]['version'] is not None
def test_401_plugin_add_invalid_plugin(self): Tns.platform_remove(app_name=self.app_name, platform=Platform.IOS) Tns.platform_remove(app_name=self.app_name, platform=Platform.ANDROID) result = Tns.plugin_add(plugin_name='wd', path=self.app_name, verify=False) assert 'wd is not a valid NativeScript plugin' in result.output assert 'Verify that the plugin package.json file ' + \ 'contains a nativescript key and try again' in result.output Tns.platform_add_android( self.app_name, framework_path=Settings.Android.FRAMEWORK_PATH) Tns.platform_add_ios(self.app_name, framework_path=Settings.IOS.FRAMEWORK_PATH) # Verify iOS only plugin result = Tns.plugin_add(plugin_name='[email protected]', path=self.app_name) assert 'tns-plugin is not supported for android' in result.output assert 'Successfully installed plugin tns-plugin' in result.output # Verify Android only plugin result = Tns.plugin_add(plugin_name='acra-telerik-analytics', path=self.app_name) assert 'acra-telerik-analytics is not supported for ios' in result.output assert 'Successfully installed plugin acra-telerik-analytics' in result.output Tns.build_ios(app_name=self.app_name, bundle=False) ios_path = os.path.join( TnsPaths.get_platforms_ios_folder(self.app_name)) assert not File.pattern_exists(ios_path, pattern='*.aar') assert not File.pattern_exists(ios_path, pattern='*acra*') Tns.build_android(app_name=self.app_name, bundle=False) android_path = os.path.join( TnsPaths.get_platforms_android_folder(self.app_name)) assert File.pattern_exists(android_path, pattern='*.aar') assert File.pattern_exists(android_path, pattern='*acra*')