UNPKG

2.36 kBJavaScriptView Raw
1process.env.BABEL_ENV = "test";
2process.env.NODE_ENV = "test";
3process.env.PUBLIC_URL = "";
4
5require("./config/env");
6
7const jest = require("jest");
8const { execSync } = require("child_process");
9const { isInGitRepository, isInMercurialRepository } = require("./utils/repository");
10const createJestConfig = require("./config/jest");
11const path = require("path");
12const resolve = require("resolve");
13const { appPath } = require("./config/paths");
14
15const cleanArgv = [];
16let argv = process.argv.slice(2);
17let env = "jsdom";
18let srcDirs = "src";
19let tsOriginalDirs = "";
20let resolvedEnv;
21let next;
22
23function resolveJestDefaultEnvironment(name) {
24 const jestDir = path.dirname(
25 resolve.sync("jest", {
26 basedir: __dirname,
27 })
28 );
29 const jestCLIDir = path.dirname(
30 resolve.sync("jest-cli", {
31 basedir: jestDir,
32 })
33 );
34 const jestConfigDir = path.dirname(
35 resolve.sync("jest-config", {
36 basedir: jestCLIDir,
37 })
38 );
39 return resolve.sync(name, {
40 basedir: jestConfigDir,
41 });
42}
43
44process.on("unhandledRejection", (err) => {
45 throw err;
46});
47
48if (
49 !process.env.CI &&
50 argv.indexOf("--watchAll") === -1 &&
51 argv.indexOf("--watchAll=false") === -1
52) {
53 argv.push(isInGitRepository() || isInMercurialRepository() ? "--watch" : "--watchAll");
54}
55
56do {
57 next = argv.shift();
58 switch (true) {
59 case next === "--env":
60 env = argv.shift();
61 break;
62 case next.indexOf("--env=") === 0:
63 env = next.substring("--env=".length);
64 break;
65 case next === "--dirs":
66 srcDirs = argv.shift();
67 break;
68 case next.indexOf("--dirs=") === 0:
69 srcDirs = next.substring("--dirs=".length);
70 break;
71 case next.indexOf("--ts-original-dirs=") === 0:
72 tsOriginalDirs = next.substring("--ts-original-dirs=".length).replace(/,/g, "|");
73 break;
74 default:
75 cleanArgv.push(next);
76 }
77} while (argv.length > 0);
78
79argv = cleanArgv;
80
81argv.push(
82 "--config",
83 JSON.stringify(
84 createJestConfig(
85 (relativePath) => path.resolve(__dirname, relativePath),
86 appPath,
87 srcDirs,
88 tsOriginalDirs
89 )
90 )
91);
92
93try {
94 resolvedEnv =
95 resolveJestDefaultEnvironment(`jest-environment-${env}`) || resolveJestDefaultEnvironment(env);
96} catch (e) {
97 // ignore
98}
99
100const testEnvironment = resolvedEnv || env;
101
102argv.push("--env", testEnvironment);
103jest.run(argv);