1
1
'use strict' ;
2
+ const assert = require ( 'assert' ) ;
2
3
const fs = require ( 'fs' ) ;
3
4
const path = require ( 'path' ) ;
4
5
const test = require ( 'tap' ) . test ;
@@ -22,6 +23,19 @@ function withNodeVersion(version, run) {
22
23
return promise ;
23
24
}
24
25
26
+ function withNodeEnv ( value , run ) {
27
+ assert ( ! ( 'NODE_ENV' in process . env ) ) ;
28
+ process . env . NODE_ENV = value ;
29
+ const reset = ( ) => {
30
+ delete process . env . NODE_ENV ;
31
+ } ;
32
+ const promise = new Promise ( resolve => {
33
+ resolve ( run ( ) ) ;
34
+ } ) ;
35
+ promise . then ( reset , reset ) ;
36
+ return promise ;
37
+ }
38
+
25
39
test ( 'uses default presets when userOptions is "default"' , t => {
26
40
const userOptions = 'default' ;
27
41
const powerAssert = true ;
@@ -33,13 +47,9 @@ test('uses default presets when userOptions is "default"', t => {
33
47
const options = result . getOptions ( ) ;
34
48
35
49
t . false ( options . babelrc ) ;
36
- t . same ( options . presets , [
37
- require . resolve ( '@ava/babel-preset-stage-4' ) ,
38
- [
39
- require . resolve ( '@ava/babel-preset-transform-test-files' ) ,
40
- { powerAssert}
41
- ]
42
- ] ) ;
50
+ t . is ( options . presets [ 0 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-stage-4' ) ) ;
51
+ t . is ( options . presets [ 1 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-transform-test-files' ) ) ;
52
+ t . same ( options . presets [ 1 ] [ 1 ] , { powerAssert} ) ;
43
53
} ) ;
44
54
} ) ;
45
55
@@ -54,39 +64,68 @@ test('uses options from babelrc when userOptions is "inherit"', t => {
54
64
const options = result . getOptions ( ) ;
55
65
56
66
t . false ( options . babelrc ) ;
57
- t . same ( options . plugins , [ require . resolve ( fixture ( 'babel-plugin-test-doubler' ) ) ] ) ;
58
- t . same ( options . presets , [
59
- require . resolve ( '@ava/babel-preset-stage-4' ) ,
60
- [
61
- require . resolve ( '@ava/babel-preset-transform-test-files' ) ,
62
- { powerAssert}
63
- ]
64
- ] ) ;
67
+ t . is ( options . plugins [ 0 ] [ 0 ] . wrapped , require ( fixture ( 'babel-plugin-test-doubler' ) ) ) ;
68
+ t . is ( options . presets [ 0 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-stage-4' ) ) ;
69
+ t . is ( options . presets [ 1 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-transform-test-files' ) ) ;
70
+ t . same ( options . presets [ 1 ] [ 1 ] , { powerAssert} ) ;
65
71
} ) ;
66
72
} ) ;
67
73
68
74
test ( 'uses userOptions for babel options when userOptions is an object' , t => {
69
- const custom = require . resolve ( fixture ( 'empty' ) ) ;
75
+ const customFile = require . resolve ( fixture ( 'babel-noop-plugin-or-preset' ) ) ;
76
+ const custom = require ( fixture ( 'babel-noop-plugin-or-preset' ) ) ;
70
77
const userOptions = {
71
- presets : [ custom ] ,
72
- plugins : [ custom ]
78
+ plugins : [ customFile ] ,
79
+ presets : [ customFile ]
73
80
} ;
74
81
const powerAssert = true ;
75
82
76
83
const projectDir = uniqueTempDir ( ) ;
77
84
const cacheDir = path . join ( projectDir , 'cache' ) ;
85
+ return babelConfigHelper . build ( projectDir , cacheDir , userOptions , powerAssert )
86
+ . then ( result => {
87
+ const options = result . getOptions ( ) ;
88
+ t . false ( options . babelrc ) ;
89
+ t . is ( options . plugins [ 0 ] [ 0 ] . wrapped , custom ) ;
90
+ t . is ( options . presets [ 0 ] [ 0 ] . wrapped , custom ) ;
91
+ t . is ( options . presets [ 1 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-transform-test-files' ) ) ;
92
+ t . same ( options . presets [ 1 ] [ 1 ] , { powerAssert} ) ;
93
+ } ) ;
94
+ } ) ;
95
+
96
+ test ( 'uses "development" environment if NODE_ENV is the empty string' , t => {
97
+ const userOptions = 'inherit' ;
98
+ const powerAssert = true ;
99
+
100
+ const projectDir = fixture ( 'babelrc' ) ;
101
+ const cacheDir = path . join ( uniqueTempDir ( ) , 'cache' ) ;
102
+ return withNodeEnv ( '' , ( ) => babelConfigHelper . build ( projectDir , cacheDir , userOptions , powerAssert ) )
103
+ . then ( result => {
104
+ const options = result . getOptions ( ) ;
105
+
106
+ t . false ( options . babelrc ) ;
107
+ t . is ( options . plugins [ 0 ] [ 0 ] . wrapped , require ( fixture ( 'babel-plugin-test-capitalizer' ) ) ) ;
108
+ t . is ( options . presets [ 0 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-stage-4' ) ) ;
109
+ t . is ( options . presets [ 1 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-transform-test-files' ) ) ;
110
+ t . same ( options . presets [ 1 ] [ 1 ] , { powerAssert} ) ;
111
+ } ) ;
112
+ } ) ;
113
+
114
+ test ( 'supports .babelrc.js files' , t => {
115
+ const userOptions = 'inherit' ;
116
+ const powerAssert = true ;
117
+
118
+ const projectDir = fixture ( 'babelrc-js' ) ;
119
+ const cacheDir = path . join ( uniqueTempDir ( ) , 'cache' ) ;
78
120
return babelConfigHelper . build ( projectDir , cacheDir , userOptions , powerAssert )
79
121
. then ( result => {
80
122
const options = result . getOptions ( ) ;
81
123
82
124
t . false ( options . babelrc ) ;
83
- t . same ( options . presets , userOptions . presets . concat ( [
84
- [
85
- require . resolve ( '@ava/babel-preset-transform-test-files' ) ,
86
- { powerAssert}
87
- ]
88
- ] ) ) ;
89
- t . same ( options . plugins , userOptions . plugins ) ;
125
+ t . is ( options . plugins [ 0 ] [ 0 ] . wrapped , require ( fixture ( 'babel-plugin-test-doubler' ) ) ) ;
126
+ t . is ( options . presets [ 0 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-stage-4' ) ) ;
127
+ t . is ( options . presets [ 1 ] [ 0 ] . wrapped , require ( '@ava/babel-preset-transform-test-files' ) ) ;
128
+ t . same ( options . presets [ 1 ] [ 1 ] , { powerAssert} ) ;
90
129
} ) ;
91
130
} ) ;
92
131
@@ -97,9 +136,7 @@ test('adds babel-plugin-syntax-object-rest-spread for node versions > 8.3.0', t
97
136
return withNodeVersion ( '9.0.0' , ( ) => babelConfigHelper . build ( projectDir , cacheDir , 'default' , true ) )
98
137
. then ( result => {
99
138
const options = result . getOptions ( ) ;
100
- t . same ( options . plugins , [
101
- require . resolve ( '@babel/plugin-syntax-object-rest-spread' )
102
- ] ) ;
139
+ t . is ( options . plugins [ 0 ] [ 0 ] . wrapped , require ( '@babel/plugin-syntax-object-rest-spread' ) . default ) ;
103
140
} ) ;
104
141
} ) ;
105
142
@@ -110,9 +147,7 @@ test('adds babel-plugin-syntax-object-rest-spread for node versions == 8.3.0', t
110
147
return withNodeVersion ( '8.3.0' , ( ) => babelConfigHelper . build ( projectDir , cacheDir , 'default' , true ) )
111
148
. then ( result => {
112
149
const options = result . getOptions ( ) ;
113
- t . same ( options . plugins , [
114
- require . resolve ( '@babel/plugin-syntax-object-rest-spread' )
115
- ] ) ;
150
+ t . is ( options . plugins [ 0 ] [ 0 ] . wrapped , require ( '@babel/plugin-syntax-object-rest-spread' ) . default ) ;
116
151
} ) ;
117
152
} ) ;
118
153
@@ -123,7 +158,7 @@ test('does not add babel-plugin-syntax-object-rest-spread for node versions < 8.
123
158
return withNodeVersion ( '8.2.0' , ( ) => babelConfigHelper . build ( projectDir , cacheDir , 'default' , true ) )
124
159
. then ( result => {
125
160
const options = result . getOptions ( ) ;
126
- t . same ( options . plugins , [ ] ) ;
161
+ t . true ( ! options . plugins ) ;
127
162
} ) ;
128
163
} ) ;
129
164
@@ -138,13 +173,7 @@ test('should disable power-assert when powerAssert is false', t => {
138
173
const options = result . getOptions ( ) ;
139
174
140
175
t . false ( options . babelrc ) ;
141
- t . same ( options . presets , [
142
- require . resolve ( '@ava/babel-preset-stage-4' ) ,
143
- [
144
- require . resolve ( '@ava/babel-preset-transform-test-files' ) ,
145
- { powerAssert}
146
- ]
147
- ] ) ;
176
+ t . same ( options . presets [ 1 ] [ 1 ] , { powerAssert} ) ;
148
177
} ) ;
149
178
} ) ;
150
179
@@ -204,7 +233,7 @@ test('updates cached verifier if dependency hashes change', t => {
204
233
const depFile = path . join ( projectDir , 'plugin.js' ) ;
205
234
206
235
makeDir . sync ( cacheDir ) ;
207
- fs . writeFileSync ( depFile , 'foo ' ) ;
236
+ fs . writeFileSync ( depFile , 'module.exports = () => ({}) ' ) ;
208
237
209
238
const userOptions = {
210
239
plugins : [ './plugin.js' ]
0 commit comments