sourcecred/config/test.js
William Chargin c48597651e
backend: invoke Webpack directly in package script (#782)
Summary:
This commit removes the `config/backend.js` script and replaces it with
a direct invocation of Webpack. This enables us to use command-line
arguments to Webpack, like `--output-path`.

Test Plan:
Note that `rm -rf bin; yarn backend` still works, and that the resulting
applications work (`node bin/sourcecred.js load`). Note that `yarn test`
and `yarn test --full` still work.

wchargin-branch: backend-webpack-direct
2018-09-05 12:28:27 -07:00

118 lines
2.5 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 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: {BASIC: "sharness", FULL: "sharness-full"}[mode],
cmd: [
"npm",
"run",
"--silent",
{BASIC: "sharness", FULL: "sharness-full"}[mode],
],
deps: [],
},
{
id: "backend",
cmd: [
"npm",
"run",
"--silent",
"backend",
"--",
"--output-path",
tmp.dirSync({
unsafeCleanup: true,
prefix: "sourcecred-backend-dry-run-",
}).name,
],
deps: [],
},
];
const extraTasks = [
{
id: "backend-in-place",
cmd: ["npm", "run", "--silent", "backend"],
// This task depends on `check-pretty` in order to work around a
// race condition in Prettier:
// https://github.com/prettier/prettier/issues/4468
deps: ["check-pretty"],
},
{
id: "fetchGithubRepoTest",
cmd: ["./src/plugins/github/fetchGithubRepoTest.sh", "--no-build"],
deps: ["backend-in-place"],
},
{
id: "loadRepositoryTest",
cmd: ["./src/plugins/git/loadRepositoryTest.sh", "--no-build"],
deps: ["backend-in-place"],
},
];
switch (mode) {
case "BASIC":
return basicTasks;
case "FULL":
return [].concat(basicTasks, extraTasks);
default:
/*:: (mode: empty); */ throw new Error(mode);
}
}