Example #1
0
    def test_karma_test_files_located(self):
        karma_config = karma.build_base_config()
        karma_config['files'] = ['example/package/lib.js']
        spec = Spec(
            karma_config=karma_config,
            build_dir=mkdtemp(self),
            rjs_loader_plugin_registry=get(RJS_LOADER_PLUGIN_REGISTRY_NAME),
            export_module_names=['preexported'],
            test_module_paths_map={
                'example/package/tests/test_some_module':
                    '/src/example/package/tests/test_some_module.js',
                'example/package/tests/some_test_data':
                    '/src/example/package/tests/some_test_data.js',
            },
        )

        with pretty_logging(stream=StringIO()):
            karma_requirejs(spec)

        with open(spec['karma_requirejs_test_script'], encoding='utf-8') as fd:
            script = es5(fd.read())

        # this is the node for the json in the build file
        deps = json.loads(str(script.children()[0].children()[0].initializer))
        tests = json.loads(str(script.children()[1].children()[0].initializer))

        self.assertEqual(['example/package/tests/test_some_module'], tests)
        self.assertEqual(
            ['preexported', 'example/package/tests/some_test_data'], deps)
Example #2
0
    def test_karma_setup_basic_test_single(self):
        karma_config = karma.build_base_config()
        build_dir = mkdtemp(self)
        spec = Spec(
            karma_config=karma_config,
            build_dir=build_dir,
            test_module_paths_map={
                'some/package/tests/test_module':
                '/src/some/package/tests/test_module.js'
            },
            webpack_single_test_bundle=True,
            toolchain_bin_path=self.setup_fake_webpack(),
        )

        karma_webpack(spec)

        unified_module = join(build_dir, '__calmjs_tests__.js')
        self.assertEqual(spec['karma_config']['files'], [unified_module])
        self.assertEqual(
            spec['karma_config']['webpack']['resolve']['alias']
            ['some/package/tests/test_module'],
            '/src/some/package/tests/test_module.js')

        with open(unified_module) as fd:
            self.assertIn('some/package/tests/test_module', fd.read())
Example #3
0
    def test_karma_setup_not_webpack_artifact(self):
        karma_config = karma.build_base_config()
        src_dir = mkdtemp(self)
        fake_artifact = join(src_dir, 'fake_artifact.js')

        with open(fake_artifact, 'w') as fd:
            fd.write('(function(root, factory) { factory() })')
            fd.write('(this, function() {});')

        build_dir = mkdtemp(self)
        spec = Spec(
            karma_config=karma_config,
            build_dir=build_dir,
            test_module_paths_map={
                'some/package/tests/test_module':
                '/src/some/package/tests/test_module.js'
            },
            artifact_paths=[fake_artifact],
            toolchain_bin_path=self.setup_fake_webpack(),
        )

        with pretty_logging(stream=StringIO()) as s:
            karma_webpack(spec)

        log = s.getvalue()
        self.assertIn("unable to extract calmjs related exports from", log)
        self.assertIn(fake_artifact, log)
Example #4
0
    def test_karma_test_files_located(self):
        karma_config = karma.build_base_config()
        karma_config['files'] = ['example/package/lib.js']
        spec = Spec(
            karma_config=karma_config,
            build_dir=mkdtemp(self),
            rjs_loader_plugin_registry=get(RJS_LOADER_PLUGIN_REGISTRY_NAME),
            export_module_names=['preexported'],
            test_module_paths_map={
                'example/package/tests/test_some_module':
                '/src/example/package/tests/test_some_module.js',
                'example/package/tests/some_test_data':
                '/src/example/package/tests/some_test_data.js',
            },
        )

        with pretty_logging(stream=StringIO()):
            karma_requirejs(spec)

        with open(spec['karma_requirejs_test_script']) as fd:
            script = parse(fd.read())

        # this is the node for the json in the build file
        deps = json.loads(
            script.children()[0].children()[0].initializer.to_ecma())
        tests = json.loads(
            script.children()[1].children()[0].initializer.to_ecma())

        self.assertEqual(['example/package/tests/test_some_module'], tests)
        self.assertEqual(
            ['preexported', 'example/package/tests/some_test_data'], deps)
Example #5
0
    def test_karma_setup_basic_file(self):
        karma_config = karma.build_base_config()
        # this should be purged.
        karma_config['files'] = ['example/package/lib.js']
        spec = Spec(
            karma_config=karma_config,
            build_dir=mkdtemp(self),
            toolchain_bin_path=self.setup_fake_webpack(),
        )

        with pretty_logging(stream=StringIO()) as s:
            karma_webpack(spec)

        self.assertEqual(spec['karma_config']['files'],
                         [join(spec['build_dir'], '__calmjs_tests__.js')])
        self.assertNotIn('unsupported', s.getvalue())
Example #6
0
    def test_karma_setup_basic_empty_case(self):
        spec = Spec(
            karma_config=karma.build_base_config(),
            build_dir=mkdtemp(self),
        )

        with pretty_logging(stream=StringIO()) as s:
            karma_requirejs(spec)

        self.assertIn(
            "no rjs loader plugin registry provided in spec; "
            "falling back to default registry 'calmjs.rjs.loader_plugin'",
            s.getvalue())

        # ensure the karma bits are added.
        self.assertTrue(exists(spec['karma_requirejs_test_config']))
        self.assertTrue(exists(spec['karma_requirejs_test_script']))
        self.assertIn('requirejs', spec['karma_config']['frameworks'])
Example #7
0
    def test_karma_setup_basic_empty_case(self):
        spec = Spec(
            karma_config=karma.build_base_config(),
            build_dir=mkdtemp(self),
        )

        with pretty_logging(stream=StringIO()) as s:
            karma_requirejs(spec)

        self.assertIn(
            "no loaderplugin registry referenced in spec; "
            "using default loaderplugin registry 'calmjs.rjs.loader_plugin'",
            s.getvalue()
        )

        # ensure the karma bits are added.
        self.assertTrue(exists(spec['karma_requirejs_test_config']))
        self.assertTrue(exists(spec['karma_requirejs_test_script']))
        self.assertIn('requirejs', spec['karma_config']['frameworks'])
Example #8
0
    def test_karma_setup_basic_test_separate(self):
        karma_config = karma.build_base_config()
        spec = Spec(
            karma_config=karma_config,
            build_dir=mkdtemp(self),
            test_module_paths_map={
                'some/package/tests/test_module':
                '/src/some/package/tests/test_module.js'
            },
            webpack_single_test_bundle=False,
            toolchain_bin_path=self.setup_fake_webpack(),
        )

        with pretty_logging(stream=StringIO()) as s:
            karma_webpack(spec)

        self.assertEqual(spec['karma_config']['files'], [
            '/src/some/package/tests/test_module.js',
        ])
        self.assertIn('unsupported', s.getvalue())
Example #9
0
    def test_karma_setup_files(self):
        karma_config = karma.build_base_config()
        karma_config['files'] = ['example/package/lib.js']
        spec = Spec(
            karma_config=karma_config,
            build_dir=mkdtemp(self),
            rjs_loader_plugin_registry=get(RJS_LOADER_PLUGIN_REGISTRY_NAME),
        )

        with pretty_logging(stream=StringIO()) as s:
            karma_requirejs(spec)

        self.assertNotIn("no rjs loader plugin registry ", s.getvalue())

        self.assertEqual(spec['karma_config']['files'], [
            spec['karma_requirejs_test_config'],
            spec['karma_requirejs_test_script'],
            {
                'pattern': 'example/package/lib.js',
                'included': False,
            },
        ])
Example #10
0
    def test_karma_setup_files(self):
        karma_config = karma.build_base_config()
        karma_config['files'] = ['example/package/lib.js']
        spec = Spec(
            karma_config=karma_config,
            build_dir=mkdtemp(self),
            rjs_loader_plugin_registry=get(RJS_LOADER_PLUGIN_REGISTRY_NAME),
        )

        with pretty_logging(stream=StringIO()) as s:
            karma_requirejs(spec)

        self.assertNotIn("no rjs loader plugin registry ", s.getvalue())

        self.assertEqual(spec['karma_config']['files'], [
            spec['karma_requirejs_test_config'],
            spec['karma_requirejs_test_script'],
            {
                'pattern': 'example/package/lib.js',
                'included': False,
            },
        ])
Example #11
0
    def _create_config(self, spec, spec_keys):
        package_names = self._pick_spec_keys(
            spec, TEST_PACKAGE_NAMES, SOURCE_PACKAGE_NAMES, default=[])

        module_registries = self._pick_spec_keys(
            spec, CALMJS_TEST_REGISTRY_NAMES, CALMJS_MODULE_REGISTRY_NAMES,
            fallback_callback=lambda x: list(
                dist.map_registry_name_to_test(x)),
            default=[]
        )

        logger.info(
            "karma driver to extract tests from packages %r using "
            "registries %r for testing", package_names, module_registries,
        )

        # calculate, extract and persist the test module names
        test_module_paths_map = spec[TEST_MODULE_PATHS_MAP] = spec.get(
            TEST_MODULE_PATHS_MAP, {})
        test_module_paths_map.update(dist.get_module_registries_dependencies(
            package_names, module_registries))

        config = karma.build_base_config()
        config['frameworks'].extend(spec.get(karma.KARMA_EXTRA_FRAMEWORKS, []))

        if spec.get(karma.KARMA_BROWSERS, []):
            config['browsers'] = spec.get(karma.KARMA_BROWSERS, [])

        files = list(utils.get_targets_from_spec(spec, spec_keys))
        test_module_paths = sorted(test_module_paths_map.values())

        config['files'] = files + test_module_paths
        self._apply_coverage_config(spec, config, files, test_module_paths)
        self._apply_wrap_tests(spec, config, test_module_paths)

        return config
Example #12
0
 def test_generate_base_config(self):
     result = karma.build_base_config()
     self.assertTrue(isinstance(result, dict))