def test_init(app_name, framework, update=True, verify=True): """ Execute `tns test init` command. :param app_name: App name (passed as --path <App name>) :param framework: Unit testing framework as string (jasmin, mocha, quinit). :param update: Update nativescript-unit-test-runner if True. :param verify: Verify command was executed successfully. :return: Result of `tns test init` command. """ app_path = TnsPaths.get_app_path(app_name=app_name) command = 'test init --framework {0}'.format(str(framework)) result = Tns.exec_command(command=command, path=app_name, timeout=300) if verify: TnsAssert.test_initialized(app_name=app_name, framework=framework, output=result.output) if update: Npm.uninstall(package='nativescript-unit-test-runner', option='--save', folder=app_path) Npm.install(package='nativescript-unit-test-runner@next', option='--save --save-exact', folder=app_path) return result
def update(app_name, modules=True, angular=True, typescript=False, web_pack=True, vue=True): app_path = os.path.join(Settings.TEST_RUN_HOME, app_name) modules_path = os.path.join(app_path, 'node_modules') if modules and App.is_dependency(app_name=app_name, dependency='tns-core-modules'): Npm.uninstall(package='tns-core-modules', option='--save', folder=app_path) Npm.install(package=Settings.Packages.MODULES, option='--save --save-exact', folder=app_path) if angular and App.is_dependency(app_name=app_name, dependency='nativescript-angular'): Npm.uninstall(package='nativescript-angular', option='--save', folder=app_path) Npm.install(package=Settings.Packages.ANGULAR, option='--save --save-exact', folder=app_path) update_script = os.path.join(modules_path, '.bin', 'update-app-ng-deps') result = run(cmd=update_script, log_level=logging.INFO) assert 'Angular dependencies updated' in result.output, 'Angular dependencies not updated.' Npm.install(folder=app_path) if typescript and App.is_dev_dependency( app_name=app_name, dependency='nativescript-dev-typescript'): Npm.uninstall(package='nativescript-dev-typescript', option='--save-dev', folder=app_path) Npm.install(package=Settings.Packages.TYPESCRIPT, option='--save-dev --save-exact', folder=app_path) update_script = os.path.join(modules_path, 'nativescript-dev-typescript', 'bin', 'ns-upgrade-tsconfig') result = run(cmd=update_script, log_level=logging.INFO) assert "Adding 'es6' lib to tsconfig.json..." in result.output assert "Adding 'dom' lib to tsconfig.json..." in result.output assert 'Adding tns-core-modules path mappings lib' in result.output if web_pack and App.is_dev_dependency( app_name=app_name, dependency='nativescript-dev-webpack'): Npm.uninstall(package='nativescript-dev-webpack', option='--save-dev', folder=app_path) Npm.install(package=Settings.Packages.WEBPACK, option='--save-dev --save-exact', folder=app_path) Folder.clean(os.path.join(app_name, 'hooks')) Folder.clean(os.path.join(app_name, 'node_modules')) Npm.install(folder=app_path) path_script = '"' + os.path.join(modules_path, '.bin', 'update-ns-webpack') + '"' update_script = path_script + ' --deps --configs' result = run(cmd=update_script, log_level=logging.INFO) assert 'Updating dev dependencies...' in result.output, 'Webpack dependencies not updated.' assert 'Updating configuration files...' in result.output, 'Webpack configs not updated.' if vue and App.is_dependency(app_name=app_name, dependency='nativescript-vue'): Npm.uninstall(package='nativescript-vue', option='--save', folder=app_path) Npm.install(package='nativescript-vue@next', option='--save --save-exact', folder=app_path)
def install_dev_dependency(app_name, dependency, version='latest'): app_path = os.path.join(Settings.TEST_RUN_HOME, app_name) Npm.uninstall(package=dependency, option='--save-dev', folder=app_path) Npm.install(package='{0}@{1}'.format(dependency, version), option='--save-dev --save-exact', folder=app_path)
def __install_schematics(): """ Install NativeScript Schematics globally. """ Npm.uninstall(package='@nativescript/schematics', option='-g') Npm.install(package=Settings.Packages.NS_SCHEMATICS, option='-g')
def __install_ng_cli(): """ Install Angular CLI globally. """ Npm.uninstall(package='@angular/cli', option='-g') Npm.install(package=Settings.Packages.NG_CLI, option='-g')
def test_scoped_package_only(self, app_name, template_info): TnsRunTest.setUp(self) # Create app app_path = os.path.join(Settings.TEST_RUN_HOME, app_name) Tns.create(app_name=app_name, template=template_info.local_package, update=True) Npm.uninstall(package='tns-core-modules', option='--save', folder=app_path) Npm.install(package=Settings.Packages.NATIVESCRIPT_CORE, option='--save --save-exact', folder=app_path) # Replace imports if template_info == Template.HELLO_WORLD_TS: files = File.find_by_extension(folder=os.path.join( app_path, 'app'), extension='ts') for file in files: File.replace(path=file, old_string='tns-core-modules', new_string='@nativescript/core', fail_safe=True) if template_info == Template.MASTER_DETAIL_NG: files = File.find_by_extension(folder=os.path.join( app_path, 'src'), extension='ts') for file in files: File.replace(path=file, old_string='tns-core-modules', new_string='@nativescript/core', fail_safe=True) Tns.platform_add_android( app_name=app_name, framework_path=Settings.Android.FRAMEWORK_PATH) if Settings.HOST_OS is OSType.OSX: Tns.platform_add_ios(app_name=app_name, framework_path=Settings.IOS.FRAMEWORK_PATH) # Run Android result = Tns.run_android(app_name=app_name, device=self.emu.id, aot=True, uglify=True) strings = TnsLogs.run_messages(app_name=app_name, run_type=RunType.UNKNOWN, platform=Platform.ANDROID) TnsLogs.wait_for_log(log_file=result.log_file, string_list=strings, timeout=300) for text in template_info.texts: self.emu.wait_for_text(text=text, timeout=60) # Run iOS Tns.kill() if Settings.HOST_OS is OSType.OSX: Simctl.uninstall_all(simulator_info=self.sim) result = Tns.run_ios(app_name=app_name, device=self.sim.id, aot=True, uglify=True) strings = TnsLogs.run_messages(app_name=app_name, run_type=RunType.UNKNOWN, platform=Platform.IOS) TnsLogs.wait_for_log(log_file=result.log_file, string_list=strings, timeout=300) for text in template_info.texts: self.sim.wait_for_text(text=text, timeout=60) # Cleanup Folder.clean(os.path.join(Settings.TEST_RUN_HOME, app_name)) TnsRunTest.tearDown(self)
def update(app_name, modules=True, angular=True, typescript=False, web_pack=True, vue=True, theme=True): app_path = os.path.join(Settings.TEST_RUN_HOME, app_name) modules_path = os.path.join(app_path, 'node_modules') if modules and App.is_dependency(app_name=app_name, dependency='tns-core-modules'): Npm.uninstall(package='tns-core-modules', option='--save', folder=app_path) Npm.install(package=Settings.Packages.MODULES, option='--save --save-exact', folder=app_path) if theme and App.is_dependency(app_name=app_name, dependency='@nativescript/theme'): Npm.uninstall(package='@nativescript/theme', option='--save', folder=app_path) Npm.install(package='@nativescript/theme@next', option='--save --save-exact', folder=app_path) if angular and App.is_dependency(app_name=app_name, dependency='nativescript-angular'): Npm.uninstall(package='nativescript-angular', option='--save', folder=app_path) Npm.install(package=Settings.Packages.ANGULAR, option='--save --save-exact', folder=app_path) update_script = os.path.join(modules_path, '.bin', 'update-app-ng-deps') result = run(cmd=update_script, log_level=logging.INFO) assert 'Angular dependencies updated' in result.output, 'Angular dependencies not updated.' Npm.install(folder=app_path) if typescript and App.is_dev_dependency( app_name=app_name, dependency='nativescript-dev-typescript'): Npm.uninstall(package='nativescript-dev-typescript', option='--save-dev', folder=app_path) Npm.install(package=Settings.Packages.TYPESCRIPT, option='--save-dev --save-exact', folder=app_path) update_script = os.path.join(modules_path, 'nativescript-dev-typescript', 'bin', 'ns-upgrade-tsconfig') result = run(cmd=update_script, log_level=logging.INFO) assert "Adding 'es6' lib to tsconfig.json..." in result.output assert "Adding 'dom' lib to tsconfig.json..." in result.output assert 'Adding tns-core-modules path mappings lib' in result.output if web_pack and App.is_dev_dependency( app_name=app_name, dependency='nativescript-dev-webpack'): Npm.uninstall(package='nativescript-dev-webpack', option='--save-dev', folder=app_path) Npm.install(package=Settings.Packages.WEBPACK, option='--save-dev --save-exact', folder=app_path) Folder.clean(os.path.join(app_name, 'hooks')) Folder.clean(os.path.join(app_name, 'node_modules')) Npm.install(folder=app_path) path_script = '"' + os.path.join(modules_path, '.bin', 'update-ns-webpack') + '"' update_script = path_script + ' --deps --configs' result = run(cmd=update_script, log_level=logging.INFO) assert 'Updating dev dependencies...' in result.output, 'Webpack dependencies not updated.' assert 'Updating configuration files...' in result.output, 'Webpack configs not updated.' if vue and App.is_dependency(app_name=app_name, dependency='nativescript-vue'): Npm.uninstall(package='nativescript-vue', option='--save', folder=app_path) Npm.install(package='nativescript-vue', option='--save --save-exact', folder=app_path) # on win when `npm i` is executed with path to .tgz it saves in package.json unix style path # which cannot be resolved on win if Settings.HOST_OS == OSType.WINDOWS: package_json = os.path.join(Settings.TEST_RUN_HOME, app_name, 'package.json') File.replace(package_json, 'file://', '\\\\\\\\', fail_safe=True)