cross-platform test setup via shelljs

My attempt at solving https://github.com/sveltejs/svelte/issues/1478
pull/1481/head
Pat Cavit 6 years ago
parent b6300eea5e
commit e79e077b40

@ -82,6 +82,7 @@
"rollup-watch": "^4.3.1",
"sade": "^1.4.0",
"sander": "^0.6.0",
"shelljs": "^0.8.2",
"source-map": "0.6",
"source-map-support": "^0.5.4",
"tiny-glob": "^0.2.1",

@ -1,10 +1,10 @@
const fs = require('fs');
const path = require('path');
const child_process = require('child_process');
const assert = require('assert');
const glob = require('tiny-glob/sync.js');
const shell = require("shelljs");
const bin = path.resolve(`svelte`);
const cli = path.resolve(__dirname, "../../cli/index.ts.js");
function normalize(str) {
return str
@ -31,49 +31,47 @@ describe('cli', () => {
const command = fs.readFileSync('command.sh', 'utf-8');
child_process.exec(`
alias svelte=${bin}
mkdir -p actual
rm -rf actual/*
${command}
`, (err, stdout, stderr) => {
if (err) {
done(err);
return;
}
shell.mkdir("-p", "actual");
shell.rm("-rf", "actual/*");
const { commandErr } = shell.exec(`node ${cli} ${command}`);
if (commandErr) {
done(commandErr);
return;
}
const actual = glob('**', { cwd: 'actual', filesOnly: true })
.map(file => {
return {
file,
contents: normalize(fs.readFileSync(`actual/${file}`, 'utf-8'))
};
});
const actual = glob('**', { cwd: 'actual', filesOnly: true })
.map(file => {
return {
file,
contents: normalize(fs.readFileSync(`actual/${file}`, 'utf-8'))
};
});
const expected = glob('**', { cwd: 'expected', filesOnly: true })
.map(file => {
return {
file,
contents: normalize(
fs.readFileSync(`expected/${file}`, 'utf-8')
)
};
});
actual.forEach((a, i) => {
const e = expected[i];
assert.equal(a.file, e.file, 'File list mismatch');
if (/\.map$/.test(a.file)) {
assert.deepEqual(JSON.parse(a.contents), JSON.parse(e.contents));
} else {
assert.equal(a.contents, e.contents);
}
const expected = glob('**', { cwd: 'expected', filesOnly: true })
.map(file => {
return {
file,
contents: normalize(
fs.readFileSync(`expected/${file}`, 'utf-8')
)
};
});
done();
actual.forEach((a, i) => {
const e = expected[i];
assert.equal(a.file, e.file, 'File list mismatch');
if (/\.map$/.test(a.file)) {
assert.deepEqual(JSON.parse(a.contents), JSON.parse(e.contents));
} else {
assert.equal(a.contents, e.contents);
}
});
done();
// });
});
});
});

@ -1 +1 @@
svelte compile src/Main.html > actual/Main.js
compile src/Main.html > actual/Main.js

@ -1 +1 @@
svelte compile src/Main.html --customElement > actual/Main.js
compile src/Main.html --customElement > actual/Main.js

@ -1 +1 @@
svelte compile src/Main.html -d > actual/Main.js
compile src/Main.html -d > actual/Main.js

@ -1 +1 @@
svelte compile src -m -o actual
compile src -m -o actual

@ -1 +1 @@
svelte compile src -o actual
compile src -o actual

@ -1 +1 @@
svelte compile src -o actual
compile src -o actual

@ -1 +1 @@
svelte compile src/Main.html -f iife -g the-answer:theAnswer > actual/Main.js
compile src/Main.html -f iife -g the-answer:theAnswer > actual/Main.js

@ -1 +1 @@
svelte compile src/Main.html -m inline -o actual/Main.js
compile src/Main.html -m inline -o actual/Main.js

@ -1 +1 @@
svelte compile src/Main.html -m -o actual/Main.js
compile src/Main.html -m -o actual/Main.js

@ -1 +1 @@
svelte compile --generate ssr src/Main.html > actual/Main.js
compile --generate ssr src/Main.html > actual/Main.js

@ -1 +1 @@
svelte compile src/Main.html --store > actual/Main.js
compile src/Main.html --store > actual/Main.js

Loading…
Cancel
Save