123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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`));
- });
- });
|