You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							63 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							63 lines
						
					
					
						
							2.0 KiB
						
					
					
				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`)); | 
						|
  }); | 
						|
});
 | 
						|
 |