Skip to content

Commit dd4d300

Browse files
committed
Reorganize tests
Separate test file for compilation testing. Add helper to create a provider.
1 parent 10db2a3 commit dd4d300

File tree

8 files changed

+86
-91
lines changed

8 files changed

+86
-91
lines changed

test/_with-provider.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const path = require('path');
2+
const pkg = require('../package.json');
3+
const makeProvider = require('..');
4+
5+
const withProvider = (t, run, identifier = 'ava-3.2') => run(t, makeProvider({
6+
negotiateProtocol(identifiers, {version}) {
7+
t.true(identifiers.includes(identifier));
8+
t.is(version, pkg.version);
9+
return {
10+
ava: {version: '3.2.0'},
11+
identifier,
12+
normalizeGlobPatterns: patterns => patterns,
13+
async findFiles({patterns}) {
14+
return patterns.map(file => path.join(__dirname, file));
15+
},
16+
projectDir: __dirname
17+
};
18+
}
19+
}));
20+
21+
module.exports = withProvider;

test/compilation.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
const path = require('path');
2+
const test = require('ava');
3+
const execa = require('execa');
4+
const withProvider = require('./_with-provider');
5+
6+
const compile = async provider => {
7+
return {
8+
state: await provider.main({
9+
config: {
10+
rewritePaths: {
11+
'typescript/': 'fixtures/',
12+
'compiled/': 'fixtures/compiled/'
13+
}
14+
}
15+
}).compile()
16+
};
17+
};
18+
19+
test('worker(): load rewritten paths files', withProvider, async (t, provider) => {
20+
const {state} = await compile(provider);
21+
const {stdout, stderr} = await execa.node(
22+
path.join(__dirname, 'fixtures/install-and-load'),
23+
['ava-3', JSON.stringify(state), path.join(__dirname, 'typescript', 'file.ts')],
24+
{cwd: path.join(__dirname, 'fixtures')}
25+
);
26+
if (stderr.length > 0) {
27+
t.log(stderr);
28+
}
29+
30+
t.snapshot(stdout);
31+
});
32+
33+
test('worker(): runs compiled files', withProvider, async (t, provider) => {
34+
const {state} = await compile(provider);
35+
const {stdout, stderr} = await execa.node(
36+
path.join(__dirname, 'fixtures/install-and-load'),
37+
['ava-3', JSON.stringify(state), path.join(__dirname, 'compiled', 'typescript.ts')],
38+
{cwd: path.join(__dirname, 'fixtures')}
39+
);
40+
if (stderr.length > 0) {
41+
t.log(stderr);
42+
}
43+
44+
t.snapshot(stdout);
45+
});

test/protocol-ava-3.2.js

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,6 @@
11
const path = require('path');
22
const test = require('ava');
3-
const pkg = require('../package.json');
4-
const makeProvider = require('..');
5-
6-
const withProvider = (t, run) => run(t, makeProvider({
7-
negotiateProtocol(identifiers, {version}) {
8-
t.true(identifiers.includes('ava-3.2'));
9-
t.is(version, pkg.version);
10-
return {
11-
ava: {version: '3.2.0'},
12-
identifier: 'ava-3.2',
13-
normalizeGlobPatterns: patterns => patterns,
14-
async findFiles({patterns}) {
15-
return patterns.map(file => path.join(__dirname, file));
16-
},
17-
projectDir: __dirname
18-
};
19-
}
20-
}));
3+
const withProvider = require('./_with-provider');
214

225
test('negotiates ava-3.2 protocol', withProvider, t => t.plan(2));
236

test/protocol-ava-3.js

Lines changed: 2 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,14 @@
1-
const path = require('path');
21
const test = require('ava');
3-
const execa = require('execa');
42
const pkg = require('../package.json');
5-
const makeProvider = require('..');
6-
7-
const withProvider = (t, run) => run(t, makeProvider({
8-
negotiateProtocol(identifiers, {version}) {
9-
t.true(identifiers.includes('ava-3'));
10-
t.is(version, pkg.version);
11-
return {
12-
ava: {version: '3.0.0'},
13-
identifier: 'ava-3',
14-
normalizeGlobPatterns: patterns => patterns,
15-
async findFiles({patterns}) {
16-
return patterns.map(file => path.join(__dirname, file));
17-
},
18-
projectDir: __dirname
19-
};
20-
}
21-
}));
3+
const withProvider = require('./_with-provider');
224

235
const validateConfig = (t, provider, config) => {
246
const error = t.throws(() => provider.main({config}));
257
error.message = error.message.replace(`v${pkg.version}`, 'v${pkg.version}'); // eslint-disable-line no-template-curly-in-string
268
t.snapshot(error);
279
};
2810

29-
test('negotiates ava-3 protocol', withProvider, t => t.plan(2));
11+
test('negotiates ava-3 protocol', withProvider, t => t.plan(2), 'ava-3');
3012

3113
test('main() config validation: throw when config is not a plain object', withProvider, (t, provider) => {
3214
validateConfig(t, provider, false);
@@ -77,44 +59,3 @@ test('main() extensions: always returns new arrays', withProvider, (t, provider)
7759
const main = provider.main({config: {rewritePaths: {'src/': 'build/'}}});
7860
t.not(main.extensions, main.extensions);
7961
});
80-
81-
const compile = async provider => {
82-
return {
83-
state: await provider.main({
84-
config: {
85-
rewritePaths: {
86-
'typescript/': 'fixtures/',
87-
'compiled/': 'fixtures/compiled/'
88-
}
89-
}
90-
}).compile()
91-
};
92-
};
93-
94-
test('worker(): load rewritten paths files', withProvider, async (t, provider) => {
95-
const {state} = await compile(provider);
96-
const {stdout, stderr} = await execa.node(
97-
path.join(__dirname, 'fixtures/install-and-load'),
98-
['ava-3', JSON.stringify(state), path.join(__dirname, 'typescript', 'file.ts')],
99-
{cwd: path.join(__dirname, 'fixtures')}
100-
);
101-
if (stderr.length > 0) {
102-
t.log(stderr);
103-
}
104-
105-
t.snapshot(stdout);
106-
});
107-
108-
test('worker(): runs compiled files', withProvider, async (t, provider) => {
109-
const {state} = await compile(provider);
110-
const {stdout, stderr} = await execa.node(
111-
path.join(__dirname, 'fixtures/install-and-load'),
112-
['ava-3', JSON.stringify(state), path.join(__dirname, 'compiled', 'typescript.ts')],
113-
{cwd: path.join(__dirname, 'fixtures')}
114-
);
115-
if (stderr.length > 0) {
116-
t.log(stderr);
117-
}
118-
119-
t.snapshot(stdout);
120-
});

test/snapshots/compilation.js.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Snapshot report for `test/compilation.js`
2+
3+
The actual snapshot is saved in `compilation.js.snap`.
4+
5+
Generated by [AVA](https://avajs.dev).
6+
7+
## worker(): load rewritten paths files
8+
9+
> Snapshot 1
10+
11+
'logged in file.js'
12+
13+
## worker(): runs compiled files
14+
15+
> Snapshot 1
16+
17+
'logged in typescript.ts'

test/snapshots/compilation.js.snap

151 Bytes
Binary file not shown.

test/snapshots/protocol-ava-3.js.md

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,3 @@ Generated by [AVA](https://avajs.dev).
9191
Error {
9292
message: 'Unexpected Typescript configuration for AVA. See https://github.com/avajs/typescript/blob/v${pkg.version}/README.md for allowed values.',
9393
}
94-
95-
## worker(): load rewritten paths files
96-
97-
> Snapshot 1
98-
99-
'logged in file.js'
100-
101-
## worker(): runs compiled files
102-
103-
> Snapshot 1
104-
105-
'logged in typescript.ts'

test/snapshots/protocol-ava-3.js.snap

-77 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)