* Add support for helpers dependencies.
They are used like this:
helpers.main = defineHelper(`
import dep from "dependency";
export default function main() { return dependency; }
`);
helpers.dependency = defineHelper(`ì
export default function dep() { return 0; }
`);
* Clone import references
* Don't make test helpers name depend on the order the tests are run
24 lines
552 B
JavaScript
24 lines
552 B
JavaScript
import path from "path";
|
|
import template from "babel-template";
|
|
import helpers from "../../lib/helpers";
|
|
|
|
function getHelperId(dir, name) {
|
|
const testName = path.basename(dir);
|
|
return `_$_${testName}_${name}`;
|
|
}
|
|
|
|
export default function defineHelper(
|
|
dir: string,
|
|
name: string,
|
|
code: string,
|
|
): string {
|
|
const id = getHelperId(dir, name);
|
|
if (id in helpers) {
|
|
throw new Error(`The ${id} helper is already defined.`);
|
|
}
|
|
Object.defineProperty(helpers, id, {
|
|
value: template(code, { sourceType: "module" }),
|
|
});
|
|
return id;
|
|
}
|