diff --git a/packages/commonjs/src/utils.js b/packages/commonjs/src/utils.js index d76a775d3..1fb089aef 100644 --- a/packages/commonjs/src/utils.js +++ b/packages/commonjs/src/utils.js @@ -34,6 +34,7 @@ export function normalizePathSlashes(path) { return path.replace(/\\/g, '/'); } +// TODO Lukas get rid of this? const VIRTUAL_PATH_BASE = '/$$rollup_base$$'; export const getVirtualPathForDynamicRequirePath = (path, commonDir) => { const normalizedPath = normalizePathSlashes(path); diff --git a/packages/commonjs/test/form.js b/packages/commonjs/test/form.js index d551cc43b..c0ab69cae 100644 --- a/packages/commonjs/test/form.js +++ b/packages/commonjs/test/form.js @@ -24,77 +24,80 @@ const transformContext = { load: ({ id }) => Promise.resolve({ id, meta: {} }) }; -fs.readdirSync('./fixtures/form').forEach((dir) => { - let config; - - try { - config = require(`./fixtures/form/${dir}/_config.js`); - } catch (err) { - config = {}; - } +// Do not run on Windows as we have full path names in the output +if (path.sep === '/') { + fs.readdirSync('./fixtures/form').forEach((dir) => { + let config; + + try { + config = require(`./fixtures/form/${dir}/_config.js`); + } catch (err) { + config = {}; + } - const inputEntries = []; + const inputEntries = []; - if (typeof config.multi === 'object') { - for (const [key, entry] of Object.entries(config.multi)) { - inputEntries.push([key, `fixtures/form/${dir}/${entry}`]); + if (typeof config.multi === 'object') { + for (const [key, entry] of Object.entries(config.multi)) { + inputEntries.push([key, `fixtures/form/${dir}/${entry}`]); + } + } else { + inputEntries.push(['output', `fixtures/form/${dir}/input.js`]); } - } else { - inputEntries.push(['output', `fixtures/form/${dir}/input.js`]); - } - - (config.solo ? test.only : test)(dir, (t) => - Promise.all( - inputEntries.map(async ([outputName, id]) => { - const { transform } = commonjs(config.options); - - transformContext.getModuleInfo = (moduleId) => { - return { - isEntry: config.entry && moduleId === id, - importers: - config.importers && config.importers[outputName] - ? config.importers[outputName].map((x) => `fixtures/form/${dir}/${x}`) - : [] + + (config.solo ? test.only : test)(dir, (t) => + Promise.all( + inputEntries.map(async ([outputName, id]) => { + const { transform } = commonjs(config.options); + + transformContext.getModuleInfo = (moduleId) => { + return { + isEntry: config.entry && moduleId === id, + importers: + config.importers && config.importers[outputName] + ? config.importers[outputName].map((x) => `fixtures/form/${dir}/${x}`) + : [] + }; }; - }; - transformContext.error = (base, props) => { - let error = base; - if (!(base instanceof Error)) error = Object.assign(new Error(base.message), base); - if (props) Object.assign(error, props); - throw error; - }; - - const input = fs.readFileSync(id, 'utf-8'); - - let outputFile = `fixtures/form/${dir}/${outputName}`; - if (fs.existsSync(`${outputFile}.${process.platform}.js`)) { - outputFile += `.${process.platform}.js`; - } else { - outputFile += '.js'; - } - - const expected = fs.readFileSync(outputFile, 'utf-8').trim(); - // eslint-disable-next-line no-await-in-loop - const transformed = await transform.call(transformContext, input, id); - const actual = (transformed ? transformed.code : input).trim().replace(/\0/g, '_'); - - // uncomment to update snapshots - // fs.writeFileSync(outputFile, `${actual}\n`); - - // trim whitespace from line endings, - // this will benefit issues like `form/try-catch-remove` where whitespace is left in the line, - // and testing on windows (\r\n) - t.is( - actual - .split('\n') - .map((x) => x.trimEnd()) - .join('\n'), - expected - .split('\n') - .map((x) => x.trimEnd()) - .join('\n') - ); - }) - ) - ); -}); + transformContext.error = (base, props) => { + let error = base; + if (!(base instanceof Error)) error = Object.assign(new Error(base.message), base); + if (props) Object.assign(error, props); + throw error; + }; + + const input = fs.readFileSync(id, 'utf-8'); + + let outputFile = `fixtures/form/${dir}/${outputName}`; + if (fs.existsSync(`${outputFile}.${process.platform}.js`)) { + outputFile += `.${process.platform}.js`; + } else { + outputFile += '.js'; + } + + const expected = fs.readFileSync(outputFile, 'utf-8').trim(); + // eslint-disable-next-line no-await-in-loop + const transformed = await transform.call(transformContext, input, id); + const actual = (transformed ? transformed.code : input).trim().replace(/\0/g, '_'); + + // uncomment to update snapshots + // fs.writeFileSync(outputFile, `${actual}\n`); + + // trim whitespace from line endings, + // this will benefit issues like `form/try-catch-remove` where whitespace is left in the line, + // and testing on windows (\r\n) + t.is( + actual + .split('\n') + .map((x) => x.trimEnd()) + .join('\n'), + expected + .split('\n') + .map((x) => x.trimEnd()) + .join('\n') + ); + }) + ) + ); + }); +}