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)
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())
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)
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)
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())
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'])
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'])
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())
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, }, ])
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
def test_generate_base_config(self): result = karma.build_base_config() self.assertTrue(isinstance(result, dict))