예제 #1
0
 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
예제 #2
0
    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)
예제 #3
0
 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)
예제 #4
0
def __install_schematics():
    """
    Install NativeScript Schematics globally.
    """
    Npm.uninstall(package='@nativescript/schematics', option='-g')
    Npm.install(package=Settings.Packages.NS_SCHEMATICS, option='-g')
예제 #5
0
def __install_ng_cli():
    """
    Install Angular CLI globally.
    """
    Npm.uninstall(package='@angular/cli', option='-g')
    Npm.install(package=Settings.Packages.NG_CLI, option='-g')
예제 #6
0
    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)
예제 #7
0
    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)