def test_plugin_package_missing_dir(self): base = NPMLoaderPluginHandler(None, 'base') base.node_module_pkg_name = 'dummy_pkg' toolchain = NullToolchain() spec = Spec(working_dir=mkdtemp(self)) with pretty_logging(stream=StringIO()) as stream: self.assertEqual( base.generate_handler_sourcepath(toolchain, spec, {}), {}) self.assertIn( "could not locate 'package.json' for the npm package 'dummy_pkg' " "which was specified to contain the loader plugin 'base' in the " "current working directory '%s'" % spec['working_dir'], stream.getvalue(), )
def test_plugin_package_success_main(self): base = NPMLoaderPluginHandler(None, 'base') base.node_module_pkg_name = 'dummy_pkg' toolchain = NullToolchain() spec = Spec(working_dir=mkdtemp(self)) pkg_dir = join(spec['working_dir'], 'node_modules', 'dummy_pkg') makedirs(pkg_dir) with open(join(pkg_dir, 'package.json'), 'w') as fd: fd.write('{"main": "base.js"}') with pretty_logging(stream=StringIO()) as stream: self.assertEqual( join(pkg_dir, 'base.js'), base.generate_handler_sourcepath(toolchain, spec, {})['base'], ) self.assertIn("for loader plugin 'base'", stream.getvalue())
def test_plugin_base(self): base = NPMLoaderPluginHandler(None, 'base') with self.assertRaises(NotImplementedError): base( toolchain=None, spec=None, modname='', source='', target='', modpath='', )
def create_base_extra_plugins(self, working_dir): # manually create a registry reg = LoaderPluginRegistry('simloaders', _working_set=WorkingSet({})) base = reg.records['base'] = NPMLoaderPluginHandler(reg, 'base') base.node_module_pkg_name = 'dummy_pkg1' extra = reg.records['extra'] = NPMLoaderPluginHandler(reg, 'extra') extra.node_module_pkg_name = 'dummy_pkg2' pkg_dir1 = join(working_dir, 'node_modules', 'dummy_pkg1') pkg_dir2 = join(working_dir, 'node_modules', 'dummy_pkg2') makedirs(pkg_dir1) makedirs(pkg_dir2) with open(join(pkg_dir1, 'package.json'), 'w') as fd: fd.write('{"main": "base.js"}') with open(join(pkg_dir2, 'package.json'), 'w') as fd: fd.write('{"main": "extra.js"}') return reg, base, extra, pkg_dir1, pkg_dir2
def test_plugin_strip_basic(self): base = NPMLoaderPluginHandler(None, 'base') self.assertEqual( base.unwrap('base!some/dir/path.ext'), 'some/dir/path.ext', ) # unrelated will not be stripped. self.assertEqual( base.unwrap('something_else!some/dir/path.ext'), 'something_else!some/dir/path.ext', )
def test_plugin_package_success_package_spec_missing_working_dir(self): remember_cwd(self) cwd = mkdtemp(self) chdir(cwd) base = NPMLoaderPluginHandler(None, 'base') base.node_module_pkg_name = 'dummy_pkg' toolchain = NullToolchain() spec = Spec() pkg_dir = join(cwd, 'node_modules', 'dummy_pkg') makedirs(pkg_dir) with open(join(pkg_dir, 'package.json'), 'w') as fd: fd.write('{"browser": "browser/base.js"}') with pretty_logging(stream=StringIO()) as stream: self.assertEqual( join(pkg_dir, 'browser', 'base.js'), base.generate_handler_sourcepath(toolchain, spec, {})['base'], ) self.assertIn("for loader plugin 'base'", stream.getvalue()) self.assertIn("missing working_dir", stream.getvalue())
def test_plugin_package_missing_main(self): base = NPMLoaderPluginHandler(None, 'base') base.node_module_pkg_name = 'dummy_pkg' toolchain = NullToolchain() spec = Spec(working_dir=mkdtemp(self)) pkg_dir = join(spec['working_dir'], 'node_modules', 'dummy_pkg') makedirs(pkg_dir) with open(join(pkg_dir, 'package.json'), 'w') as fd: fd.write('{}') with pretty_logging(stream=StringIO()) as stream: self.assertEqual( base.generate_handler_sourcepath(toolchain, spec, {}), {}) self.assertIn( "calmjs.loaderplugin 'package.json' for the npm package " "'dummy_pkg' does not contain a valid entry point: sources " "required for loader plugin 'base' cannot be included " "automatically; the build process may fail", stream.getvalue(), )
def test_plugin_package_base(self): base = NPMLoaderPluginHandler(None, 'base') toolchain = NullToolchain() spec = Spec(working_dir=mkdtemp(self)) with pretty_logging(stream=StringIO()) as stream: self.assertEqual( base.generate_handler_sourcepath(toolchain, spec, {}), {}) self.assertIn( "no npm package name specified or could be resolved for " "loaderplugin 'base' of registry '<invalid_registry/handler>'; " "please subclass calmjs.loaderplugin:NPMLoaderPluginHandler such " "that the npm package name become specified", stream.getvalue(), )
def test_plugin_strip_edge(self): base = NPMLoaderPluginHandler(None, 'base') self.assertEqual(base.unwrap('base!'), '')