17 lines
829 B
JavaScript
17 lines
829 B
JavaScript
import { readFileSync } from "node:fs"
|
|
import { spawnSync } from "node:child_process"
|
|
const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"))
|
|
const npmCli = process.env.npm_execpath
|
|
if (!npmCli) throw new Error("Запускайте тесты через npm --prefix backend test")
|
|
for (const command of pkg.scripts["test:all"].split(/\s*&&\s*/)) {
|
|
const match = /^npm run (test:[\w-]+)$/.exec(command)
|
|
if (!match) throw new Error("Неизвестный формат профиля backend tests")
|
|
const result = spawnSync(process.execPath, [npmCli, "run", match[1]], {
|
|
cwd: new URL("../", import.meta.url),
|
|
env: { ...process.env, NODE_ENV: "test" },
|
|
stdio: "inherit",
|
|
})
|
|
if (result.error) throw result.error
|
|
if (result.status !== 0) process.exit(result.status ?? 1)
|
|
}
|