Nicolò Ribaudo 977c72250a Add support for helper dependencies (#6254)
* 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
2017-10-02 10:10:52 -07:00

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;
}