Skip to content

Commit 80077c1

Browse files
authored
Merge pull request #1481 from tivac/windows-cli-tests
cross-platform test setup via shelljs
2 parents b6300ee + 5f156fd commit 80077c1

File tree

3 files changed

+64
-43
lines changed

3 files changed

+64
-43
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
"rollup-watch": "^4.3.1",
8383
"sade": "^1.4.0",
8484
"sander": "^0.6.0",
85+
"shelljs": "^0.8.2",
8586
"source-map": "0.6",
8687
"source-map-support": "^0.5.4",
8788
"tiny-glob": "^0.2.1",

test/cli/index.js

+44-42
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
const fs = require('fs');
22
const path = require('path');
3-
const child_process = require('child_process');
43
const assert = require('assert');
54
const glob = require('tiny-glob/sync.js');
5+
const shell = require("shelljs");
66

7-
const bin = path.resolve(`svelte`);
7+
const cli = path.resolve(__dirname, "../../cli/index.ts.js");
88

99
function normalize(str) {
1010
return str
1111
.replace(/^\s+$/gm, '')
12-
.replace(/generated by Svelte v[.\d]+/, `generated by Svelte vx.y.z`)
12+
.replace(
13+
/\/\*(.*?)generated by Svelte v[.\d]+/,
14+
(_, path) => `/*${path.replace(/\\/g, '/')}generated by Svelte vx.y.z`
15+
)
1316
.trim();
1417
}
1518

@@ -31,49 +34,48 @@ describe('cli', () => {
3134

3235
const command = fs.readFileSync('command.sh', 'utf-8');
3336

34-
child_process.exec(`
35-
alias svelte=${bin}
36-
mkdir -p actual
37-
rm -rf actual/*
38-
${command}
39-
`, (err, stdout, stderr) => {
40-
if (err) {
41-
done(err);
42-
return;
43-
}
37+
shell.mkdir("-p", "actual");
38+
shell.rm("-rf", "actual/*");
39+
const { commandErr } = shell.exec(
40+
command.replace(/^svelte /, `node ${cli} `)
41+
);
42+
43+
if (commandErr) {
44+
done(commandErr);
45+
return;
46+
}
47+
48+
const actual = glob('**', { cwd: 'actual', filesOnly: true })
49+
.map(file => {
50+
return {
51+
file,
52+
contents: normalize(fs.readFileSync(`actual/${file}`, 'utf-8'))
53+
};
54+
});
4455

45-
const actual = glob('**', { cwd: 'actual', filesOnly: true })
46-
.map(file => {
47-
return {
48-
file,
49-
contents: normalize(fs.readFileSync(`actual/${file}`, 'utf-8'))
50-
};
51-
});
52-
53-
const expected = glob('**', { cwd: 'expected', filesOnly: true })
54-
.map(file => {
55-
return {
56-
file,
57-
contents: normalize(
58-
fs.readFileSync(`expected/${file}`, 'utf-8')
59-
)
60-
};
61-
});
62-
63-
actual.forEach((a, i) => {
64-
const e = expected[i];
65-
66-
assert.equal(a.file, e.file, 'File list mismatch');
67-
68-
if (/\.map$/.test(a.file)) {
69-
assert.deepEqual(JSON.parse(a.contents), JSON.parse(e.contents));
70-
} else {
71-
assert.equal(a.contents, e.contents);
72-
}
56+
const expected = glob('**', { cwd: 'expected', filesOnly: true })
57+
.map(file => {
58+
return {
59+
file,
60+
contents: normalize(
61+
fs.readFileSync(`expected/${file}`, 'utf-8')
62+
)
63+
};
7364
});
7465

75-
done();
66+
actual.forEach((a, i) => {
67+
const e = expected[i];
68+
69+
assert.equal(a.file, e.file, 'File list mismatch');
70+
71+
if (/\.map$/.test(a.file)) {
72+
assert.deepEqual(JSON.parse(a.contents), JSON.parse(e.contents));
73+
} else {
74+
assert.equal(a.contents, e.contents);
75+
}
7676
});
77+
78+
done();
7779
});
7880
});
7981
});

yarn.lock

+19-1
Original file line numberDiff line numberDiff line change
@@ -1431,7 +1431,7 @@ glob@7.1.1:
14311431
once "^1.3.0"
14321432
path-is-absolute "^1.0.0"
14331433

1434-
glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2:
1434+
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2:
14351435
version "7.1.2"
14361436
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
14371437
dependencies:
@@ -1699,6 +1699,10 @@ inquirer@^3.0.6:
16991699
strip-ansi "^4.0.0"
17001700
through "^2.3.6"
17011701

1702+
interpret@^1.0.0:
1703+
version "1.1.0"
1704+
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
1705+
17021706
invariant@^2.2.2:
17031707
version "2.2.4"
17041708
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
@@ -2978,6 +2982,12 @@ readdirp@^2.0.0:
29782982
readable-stream "^2.0.2"
29792983
set-immediate-shim "^1.0.1"
29802984

2985+
rechoir@^0.6.2:
2986+
version "0.6.2"
2987+
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
2988+
dependencies:
2989+
resolve "^1.1.6"
2990+
29812991
redent@^1.0.0:
29822992
version "1.0.0"
29832993
resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
@@ -3329,6 +3339,14 @@ shebang-regex@^1.0.0:
33293339
version "1.0.0"
33303340
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
33313341

3342+
shelljs@^0.8.2:
3343+
version "0.8.2"
3344+
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.2.tgz#345b7df7763f4c2340d584abb532c5f752ca9e35"
3345+
dependencies:
3346+
glob "^7.0.0"
3347+
interpret "^1.0.0"
3348+
rechoir "^0.6.2"
3349+
33323350
signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2:
33333351
version "3.0.2"
33343352
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"

0 commit comments

Comments
 (0)