@@ -31,7 +31,7 @@ if (process.env.SKIP_PREFLIGHT_CHECK !== 'true') {
31
31
// @remove -on-eject-end
32
32
33
33
const jest = require ( 'jest' ) ;
34
- const argv = process . argv . slice ( 2 ) ;
34
+ let argv = process . argv . slice ( 2 ) ;
35
35
36
36
// Watch unless on CI, in coverage mode, or explicitly running all tests
37
37
if (
@@ -57,5 +57,59 @@ argv.push(
57
57
)
58
58
)
59
59
) ;
60
+
61
+ // This is a very dirty workaround for https://github.com/facebook/jest/issues/5913.
62
+ // We're trying to resolve the environment ourselves because Jest does it incorrectly.
63
+ // TODO: remove this (and the `resolve` dependency) as soon as it's fixed in Jest.
64
+ const resolve = require ( 'resolve' ) ;
65
+ function resolveJestDefaultEnvironment ( name ) {
66
+ const jestDir = path . dirname (
67
+ resolve . sync ( 'jest' , {
68
+ basedir : __dirname ,
69
+ } )
70
+ ) ;
71
+ const jestCLIDir = path . dirname (
72
+ resolve . sync ( 'jest-cli' , {
73
+ basedir : jestDir ,
74
+ } )
75
+ ) ;
76
+ const jestConfigDir = path . dirname (
77
+ resolve . sync ( 'jest-config' , {
78
+ basedir : jestCLIDir ,
79
+ } )
80
+ ) ;
81
+ return resolve . sync ( name , {
82
+ basedir : jestConfigDir ,
83
+ } ) ;
84
+ }
85
+ let cleanArgv = [ ] ;
86
+ let env = 'node' ;
87
+ let next ;
88
+ do {
89
+ next = argv . shift ( ) ;
90
+ if ( next === '--env' ) {
91
+ env = argv . shift ( ) ;
92
+ } else if ( next . indexOf ( '--env=' ) === 0 ) {
93
+ env = next . substring ( '--env=' . length ) ;
94
+ } else {
95
+ cleanArgv . push ( next ) ;
96
+ }
97
+ } while ( argv . length > 0 ) ;
98
+ argv = cleanArgv ;
99
+ let resolvedEnv ;
100
+ try {
101
+ resolvedEnv = resolveJestDefaultEnvironment ( `jest-environment-${ env } ` ) ;
102
+ } catch ( e ) {
103
+ // ignore
104
+ }
105
+ if ( ! resolvedEnv ) {
106
+ try {
107
+ resolvedEnv = resolveJestDefaultEnvironment ( env ) ;
108
+ } catch ( e ) {
109
+ // ignore
110
+ }
111
+ }
112
+ const testEnvironment = resolvedEnv || env ;
113
+ argv . push ( '--env' , testEnvironment ) ;
60
114
// @remove -on-eject-end
61
115
jest . run ( argv ) ;
0 commit comments