Skip to content

Commit

Permalink
test(commonjs): skip form tests on Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
lukastaegert committed Nov 9, 2021
1 parent be9867f commit 92c7442
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 70 deletions.
1 change: 1 addition & 0 deletions packages/commonjs/src/utils.js
Expand Up @@ -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);
Expand Down
143 changes: 73 additions & 70 deletions packages/commonjs/test/form.js
Expand Up @@ -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')
);
})
)
);
});
}

0 comments on commit 92c7442

Please sign in to comment.