|
|
const path = require(`path`); let PnpWebpackPlugin = require(`./index`);
function makeResolver(resolverPlugins, options = {}) { const { NodeJsInputFileSystem, CachedInputFileSystem, ResolverFactory } = require('enhanced-resolve');
const resolver = ResolverFactory.createResolver({ fileSystem: new CachedInputFileSystem(new NodeJsInputFileSystem(), 4000), extensions: ['.js', '.json'], ... options, });
for (const {apply} of resolverPlugins) apply(resolver);
return resolver; }
function makeRequest(resolver, request, issuer) { return new Promise((resolve, reject) => { resolver.resolve({}, issuer, request, {}, (err, filepath) => { if (err) { reject(err); } else { resolve(filepath); } }); }); }
describe(`Regular Plugin`, () => { it(`should correctly resolve a relative require`, async () => { const resolver = makeResolver([PnpWebpackPlugin]); const resolution = await makeRequest(resolver, `./index.js`, __dirname);
expect(resolution).toEqual(path.normalize(`${__dirname}/index.js`)); });
it(`shouldn't prevent the 'extensions' option from working`, async () => { const resolver = makeResolver([PnpWebpackPlugin]); const resolution = await makeRequest(resolver, `./index`, __dirname);
expect(resolution).toEqual(path.normalize(`${__dirname}/index.js`)); });
it(`shouldn't prevent the 'alias' option from working`, async () => { const resolver = makeResolver([PnpWebpackPlugin], {alias: {[`foo`]: `./fixtures/index.js`}}); const resolution = await makeRequest(resolver, `foo`, __dirname);
expect(resolution).toEqual(path.normalize(`${__dirname}/fixtures/index.js`)); });
it(`shouldn't prevent the 'modules' option from working`, async () => { const resolver = makeResolver([PnpWebpackPlugin], {modules: [`./fixtures`]}); const resolution = await makeRequest(resolver, `file`, __dirname);
expect(resolution).toEqual(path.normalize(`${__dirname}/fixtures/file.js`)); }); });
|