Skip to content

Commit b4ae7ad

Browse files
committed
Use a proper macro to create providers; suffix test titles with identifier when used outside of protocol-specific tests
1 parent ff8eca4 commit b4ae7ad

1 file changed

Lines changed: 39 additions & 15 deletions

File tree

test/_with-provider.js

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,45 @@
1+
// eslint-disable-line ava/no-ignored-test-files
12
import path from 'node:path';
3+
import test from 'ava';
24
import pkg from '../package.json' with {type: 'json'};
35
import makeProvider from '@ava/typescript';
46

5-
const createProviderMacro = (identifier, avaVersion, projectDirectory = import.meta.dirname) => (t, run) => run(t, makeProvider({
6-
negotiateProtocol(identifiers, {version}) {
7-
t.true(identifiers.includes(identifier));
8-
t.is(version, pkg.version);
9-
return {
10-
ava: {avaVersion},
11-
identifier,
12-
normalizeGlobPatterns: patterns => patterns,
13-
async findFiles({patterns}) {
14-
return patterns.map(file => path.join(projectDirectory, file));
15-
},
16-
projectDir: projectDirectory,
17-
};
18-
},
19-
}));
7+
const {file: testFile} = test.meta;
8+
9+
const createProviderMacro = (
10+
identifier,
11+
avaVersion,
12+
projectDirectory = import.meta.dirname,
13+
) =>
14+
test.macro({
15+
exec(t, run) {
16+
return run(
17+
t,
18+
makeProvider({
19+
negotiateProtocol(identifiers, {version}) {
20+
t.true(identifiers.includes(identifier));
21+
t.is(version, pkg.version);
22+
return {
23+
ava: {avaVersion},
24+
identifier,
25+
normalizeGlobPatterns: patterns => patterns,
26+
async findFiles({patterns}) {
27+
return patterns.map(file =>
28+
path.join(projectDirectory, file));
29+
},
30+
projectDir: projectDirectory,
31+
};
32+
},
33+
}),
34+
);
35+
},
36+
title(title = '') {
37+
if (testFile.includes(identifier)) {
38+
return title;
39+
}
40+
41+
return `${title} (with ${identifier} provider)`;
42+
},
43+
});
2044

2145
export default createProviderMacro;

0 commit comments

Comments
 (0)