@@ -24,7 +24,7 @@ process.on('unhandledRejection', err => {
2424require ( '../config/env' ) ;
2525
2626const jest = require ( 'jest' ) ;
27- const argv = process . argv . slice ( 2 ) ;
27+ let argv = process . argv . slice ( 2 ) ;
2828
2929// Watch unless on CI or in coverage mode
3030if ( ! process . env . CI && argv . indexOf ( '--coverage' ) < 0 ) {
@@ -46,5 +46,59 @@ argv.push(
4646 )
4747 )
4848) ;
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 ) ;
49103// @remove -on-eject-end
50104jest . run ( argv ) ;
0 commit comments