コード例 #1
0
 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(),
     )
コード例 #2
0
    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())
コード例 #3
0
 def test_plugin_base(self):
     base = NPMLoaderPluginHandler(None, 'base')
     with self.assertRaises(NotImplementedError):
         base(
             toolchain=None, spec=None, modname='', source='', target='',
             modpath='',
         )
コード例 #4
0
    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
コード例 #5
0
 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',
     )
コード例 #6
0
    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())
コード例 #7
0
    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(),
        )
コード例 #8
0
 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(),
     )
コード例 #9
0
 def test_plugin_strip_edge(self):
     base = NPMLoaderPluginHandler(None, 'base')
     self.assertEqual(base.unwrap('base!'), '')