import path from 'node:path';
import test from 'ava';
import pkg from '../package.json' with {type: 'json'};
import makeProvider from '@ava/typescript';
const {file: testFile} = test.meta;
const createProviderMacro = (
identifier,
avaVersion,
projectDirectory = import.meta.dirname,
) =>
test.macro({
exec(t, run) {
return run(
t,
makeProvider({
negotiateProtocol(identifiers, {version}) {
t.true(identifiers.includes(identifier));
t.is(version, pkg.version);
return {
ava: {avaVersion},
identifier,
normalizeGlobPatterns: patterns => patterns,
async findFiles({patterns}) {
return patterns.map(file =>
path.join(projectDirectory, file));
},
projectDir: projectDirectory,
};
},
}),
);
},
title(title = '') {
if (testFile.includes(identifier)) {
return title;
}
return `${title} (with ${identifier} provider)`;
},
});
export default createProviderMacro;