mirror of
https://github.com/status-im/sourcecred.git
synced 2025-01-25 11:59:00 +00:00
3dda4ab35c
Summary: Lots of tests need the output of `yarn backend`. Before this commit, they tended to create it themselves. This was slow and wasteful, and also could in principle have race conditions (though in practice usually tended not to). This commit updates tests to respect a `SOURCECRED_BIN` environment variable indicating the path to an existing directory of backend applications. Closes #765. Test Plan: Running `yarn test --full` passes. Prepending `echo run >>/tmp/log &&` to the `backend` script in `package.json` and running `yarn test --full` results in a log file containing only one line, indicating that the script really is run only once. wchargin-branch: deduplicate-backend
125 lines
2.6 KiB
JavaScript
125 lines
2.6 KiB
JavaScript
// @flow
|
|
|
|
const tmp = require("tmp");
|
|
|
|
const execDependencyGraph = require("../src/tools/execDependencyGraph");
|
|
|
|
main();
|
|
|
|
function main() {
|
|
const mode =
|
|
process.env["TRAVIS_EVENT_TYPE"] === "cron" ||
|
|
process.argv.includes("--full")
|
|
? "FULL"
|
|
: "BASIC";
|
|
execDependencyGraph(makeTasks(mode)).then(({success}) => {
|
|
process.exitCode = success ? 0 : 1;
|
|
});
|
|
}
|
|
|
|
function makeTasks(mode /*: "BASIC" | "FULL" */) {
|
|
const backendOutput = tmp.dirSync({
|
|
unsafeCleanup: true,
|
|
prefix: "sourcecred-test-",
|
|
}).name;
|
|
console.log("tmpdir for backend output: " + backendOutput);
|
|
|
|
function withSourcecredBinEnv(
|
|
invocation /*: $ReadOnlyArray<string> */
|
|
) /*: string[] */ {
|
|
return ["env", "SOURCECRED_BIN=" + backendOutput, ...invocation];
|
|
}
|
|
|
|
const basicTasks = [
|
|
{
|
|
id: "ensure-flow-typing",
|
|
cmd: ["./scripts/ensure-flow.sh"],
|
|
deps: [],
|
|
},
|
|
{
|
|
// eslint-disable-next-line no-useless-concat
|
|
id: "check-stop" + "ships",
|
|
// eslint-disable-next-line no-useless-concat
|
|
cmd: ["./scripts/check-stop" + "ships.sh"],
|
|
deps: [],
|
|
},
|
|
{
|
|
id: "check-pretty",
|
|
cmd: ["npm", "run", "--silent", "check-pretty"],
|
|
deps: [],
|
|
},
|
|
{
|
|
id: "lint",
|
|
cmd: ["npm", "run", "--silent", "lint"],
|
|
deps: [],
|
|
},
|
|
{
|
|
id: "flow",
|
|
cmd: [
|
|
"npm",
|
|
"run",
|
|
"--silent",
|
|
"flow",
|
|
"--",
|
|
"--quiet",
|
|
"--max-warnings=0",
|
|
],
|
|
deps: [],
|
|
},
|
|
{
|
|
id: "unit",
|
|
cmd: ["npm", "run", "--silent", "unit"],
|
|
deps: [],
|
|
},
|
|
{
|
|
id: "backend",
|
|
cmd: [
|
|
"npm",
|
|
"run",
|
|
"--silent",
|
|
"backend",
|
|
"--",
|
|
"--output-path",
|
|
backendOutput,
|
|
],
|
|
deps: [],
|
|
},
|
|
{
|
|
id: {BASIC: "sharness", FULL: "sharness-full"}[mode],
|
|
cmd: withSourcecredBinEnv([
|
|
"npm",
|
|
"run",
|
|
"--silent",
|
|
{BASIC: "sharness", FULL: "sharness-full"}[mode],
|
|
]),
|
|
deps: ["backend"],
|
|
},
|
|
];
|
|
const extraTasks = [
|
|
{
|
|
id: "fetchGithubRepoTest",
|
|
cmd: withSourcecredBinEnv([
|
|
"./src/plugins/github/fetchGithubRepoTest.sh",
|
|
"--no-build",
|
|
]),
|
|
deps: ["backend"],
|
|
},
|
|
{
|
|
id: "loadRepositoryTest",
|
|
cmd: withSourcecredBinEnv([
|
|
"./src/plugins/git/loadRepositoryTest.sh",
|
|
"--no-build",
|
|
]),
|
|
deps: ["backend"],
|
|
},
|
|
];
|
|
switch (mode) {
|
|
case "BASIC":
|
|
return basicTasks;
|
|
case "FULL":
|
|
return [].concat(basicTasks, extraTasks);
|
|
default:
|
|
/*:: (mode: empty); */ throw new Error(mode);
|
|
}
|
|
}
|