@@ -24,7 +24,7 @@ process.on('unhandledRejection', err => {
24
24
require ( '../config/env' ) ;
25
25
26
26
const jest = require ( 'jest' ) ;
27
- const argv = process . argv . slice ( 2 ) ;
27
+ let argv = process . argv . slice ( 2 ) ;
28
28
29
29
// Watch unless on CI or in coverage mode
30
30
if ( ! process . env . CI && argv . indexOf ( '--coverage' ) < 0 ) {
@@ -46,5 +46,59 @@ argv.push(
46
46
)
47
47
)
48
48
) ;
49
+
50
+ // This is a very dirty workaround for https://github.com/facebook/jest/issues/5913.
51
+ // We're trying to resolve the environment ourselves because Jest does it incorrectly.
52
+ // TODO: remove this (and the `resolve` dependency) as soon as it's fixed in Jest.
53
+ const resolve = require ( 'resolve' ) ;
54
+ function resolveJestDefaultEnvironment ( name ) {
55
+ const jestDir = path . dirname (
56
+ resolve . sync ( 'jest' , {
57
+ basedir : __dirname ,
58
+ } )
59
+ ) ;
60
+ const jestCLIDir = path . dirname (
61
+ resolve . sync ( 'jest-cli' , {
62
+ basedir : jestDir ,
63
+ } )
64
+ ) ;
65
+ const jestConfigDir = path . dirname (
66
+ resolve . sync ( 'jest-config' , {
67
+ basedir : jestCLIDir ,
68
+ } )
69
+ ) ;
70
+ return resolve . sync ( name , {
71
+ basedir : jestConfigDir ,
72
+ } ) ;
73
+ }
74
+ let cleanArgv = [ ] ;
75
+ let env = 'node' ;
76
+ let next ;
77
+ do {
78
+ next = argv . shift ( ) ;
79
+ if ( next === '--env' ) {
80
+ env = argv . shift ( ) ;
81
+ } else if ( next . indexOf ( '--env=' ) === 0 ) {
82
+ env = next . substring ( '--env=' . length ) ;
83
+ } else {
84
+ cleanArgv . push ( next ) ;
85
+ }
86
+ } while ( argv . length > 0 ) ;
87
+ argv = cleanArgv ;
88
+ let resolvedEnv ;
89
+ try {
90
+ resolvedEnv = resolveJestDefaultEnvironment ( `jest-environment-${ env } ` ) ;
91
+ } catch ( e ) {
92
+ // ignore
93
+ }
94
+ if ( ! resolvedEnv ) {
95
+ try {
96
+ resolvedEnv = resolveJestDefaultEnvironment ( env ) ;
97
+ } catch ( e ) {
98
+ // ignore
99
+ }
100
+ }
101
+ const testEnvironment = resolvedEnv || env ;
102
+ argv . push ( '--env' , testEnvironment ) ;
49
103
// @remove -on-eject-end
50
104
jest . run ( argv ) ;
0 commit comments