@@ -13,186 +13,16 @@ var localCLI = resolveCwd('ava/cli');
13
13
// see https://github.com/nodejs/node/issues/6624
14
14
if ( localCLI && path . relative ( localCLI , __filename ) !== '' ) {
15
15
debug ( 'Using local install of AVA' ) ;
16
- require ( localCLI ) ;
17
- return ;
18
- }
19
-
20
- if ( debug . enabled ) {
21
- require ( 'time-require' ) ;
22
- }
23
-
24
- var updateNotifier = require ( 'update-notifier' ) ;
25
- var figures = require ( 'figures' ) ;
26
- var arrify = require ( 'arrify' ) ;
27
- var meow = require ( 'meow' ) ;
28
- var Promise = require ( 'bluebird' ) ;
29
- var pkgConf = require ( 'pkg-conf' ) ;
30
- var isCi = require ( 'is-ci' ) ;
31
- var hasFlag = require ( 'has-flag' ) ;
32
- var colors = require ( './lib/colors' ) ;
33
- var verboseReporter = require ( './lib/reporters/verbose' ) ;
34
- var miniReporter = require ( './lib/reporters/mini' ) ;
35
- var tapReporter = require ( './lib/reporters/tap' ) ;
36
- var Logger = require ( './lib/logger' ) ;
37
- var Watcher = require ( './lib/watcher' ) ;
38
- var babelConfig = require ( './lib/babel-config' ) ;
39
- var Api = require ( './api' ) ;
40
-
41
- // Bluebird specific
42
- Promise . longStackTraces ( ) ;
43
-
44
- var conf = pkgConf . sync ( 'ava' ) ;
45
-
46
- var pkgDir = path . dirname ( pkgConf . filepath ( conf ) ) ;
47
-
48
- try {
49
- conf . babel = babelConfig . validate ( conf . babel ) ;
50
- } catch ( err ) {
51
- console . log ( '\n ' + err . message ) ;
52
- process . exit ( 1 ) ;
53
- }
54
-
55
- var cli = meow ( [
56
- 'Usage' ,
57
- ' ava [<file|directory|glob> ...]' ,
58
- '' ,
59
- 'Options' ,
60
- ' --init Add AVA to your project' ,
61
- ' --fail-fast Stop after first test failure' ,
62
- ' --serial, -s Run tests serially' ,
63
- ' --tap, -t Generate TAP output' ,
64
- ' --verbose, -v Enable verbose output' ,
65
- ' --no-cache Disable the transpiler cache' ,
66
- ' --no-power-assert Disable Power Assert' ,
67
- ' --match, -m Only run tests with matching title (Can be repeated)' ,
68
- ' --watch, -w Re-run tests when tests and source files change' ,
69
- ' --source, -S Pattern to match source files so tests can be re-run (Can be repeated)' ,
70
- ' --timeout, -T Set global timeout' ,
71
- ' --concurrency, -c Maximum number of test files running at the same time (EXPERIMENTAL)' ,
72
- '' ,
73
- 'Examples' ,
74
- ' ava' ,
75
- ' ava test.js test2.js' ,
76
- ' ava test-*.js' ,
77
- ' ava test' ,
78
- ' ava --init' ,
79
- ' ava --init foo.js' ,
80
- '' ,
81
- 'Default patterns when no arguments:' ,
82
- 'test.js test-*.js test/**/*.js **/__tests__/**/*.js **/*.test.js'
83
- ] , {
84
- string : [
85
- '_' ,
86
- 'timeout' ,
87
- 'source' ,
88
- 'match' ,
89
- 'concurrency'
90
- ] ,
91
- boolean : [
92
- 'fail-fast' ,
93
- 'verbose' ,
94
- 'serial' ,
95
- 'tap' ,
96
- 'watch'
97
- ] ,
98
- default : conf ,
99
- alias : {
100
- t : 'tap' ,
101
- v : 'verbose' ,
102
- s : 'serial' ,
103
- m : 'match' ,
104
- w : 'watch' ,
105
- S : 'source' ,
106
- T : 'timeout' ,
107
- c : 'concurrency'
108
- }
109
- } ) ;
110
-
111
- updateNotifier ( { pkg : cli . pkg } ) . notify ( ) ;
112
-
113
- if ( cli . flags . init ) {
114
- require ( 'ava-init' ) ( ) ;
115
- return ;
116
- }
117
-
118
- if (
119
- ( ( hasFlag ( '--watch' ) || hasFlag ( '-w' ) ) && ( hasFlag ( '--tap' ) || hasFlag ( '-t' ) ) ) ||
120
- ( conf . watch && conf . tap )
121
- ) {
122
- console . error ( ' ' + colors . error ( figures . cross ) + ' The TAP reporter is not available when using watch mode.' ) ;
123
- process . exit ( 1 ) ;
124
- }
125
-
126
- if ( hasFlag ( '--require' ) || hasFlag ( '-r' ) ) {
127
- console . error ( ' ' + colors . error ( figures . cross ) + ' The --require and -r flags are deprecated. Requirements should be configured in package.json - see documentation.' ) ;
128
- process . exit ( 1 ) ;
129
- }
130
-
131
- var api = new Api ( {
132
- failFast : cli . flags . failFast ,
133
- serial : cli . flags . serial ,
134
- require : arrify ( conf . require ) ,
135
- cacheEnabled : cli . flags . cache !== false ,
136
- powerAssert : cli . flags . powerAssert !== false ,
137
- explicitTitles : cli . flags . watch ,
138
- match : arrify ( cli . flags . match ) ,
139
- babelConfig : conf . babel ,
140
- resolveTestsFrom : cli . input . length === 0 ? pkgDir : process . cwd ( ) ,
141
- timeout : cli . flags . timeout ,
142
- concurrency : cli . flags . concurrency ? parseInt ( cli . flags . concurrency , 10 ) : 0
143
- } ) ;
144
-
145
- var reporter ;
146
-
147
- if ( cli . flags . tap && ! cli . flags . watch ) {
148
- reporter = tapReporter ( ) ;
149
- } else if ( cli . flags . verbose || isCi ) {
150
- reporter = verboseReporter ( ) ;
16
+ require ( localCLI ) ; // eslint-disable-line import/no-dynamic-require
151
17
} else {
152
- reporter = miniReporter ( { watching : cli . flags . watch } ) ;
153
- }
154
-
155
- reporter . api = api ;
156
- var logger = new Logger ( reporter ) ;
157
-
158
- logger . start ( ) ;
159
-
160
- api . on ( 'test-run' , function ( runStatus ) {
161
- reporter . api = runStatus ;
162
- runStatus . on ( 'test' , logger . test ) ;
163
- runStatus . on ( 'error' , logger . unhandledError ) ;
164
-
165
- runStatus . on ( 'stdout' , logger . stdout ) ;
166
- runStatus . on ( 'stderr' , logger . stderr ) ;
167
- } ) ;
168
-
169
- var files = cli . input . length ? cli . input : arrify ( conf . files ) ;
18
+ if ( debug . enabled ) {
19
+ require ( 'time-require' ) ; // eslint-disable-line import/no-unassigned-import
20
+ }
170
21
171
- if ( cli . flags . watch ) {
172
22
try {
173
- var watcher = new Watcher ( logger , api , files , arrify ( cli . flags . source ) ) ;
174
- watcher . observeStdin ( process . stdin ) ;
23
+ require ( './lib/cli' ) . run ( ) ;
175
24
} catch ( err ) {
176
- if ( err . name === 'AvaError' ) {
177
- // An AvaError may be thrown if chokidar is not installed. Log it nicely.
178
- console . error ( ' ' + colors . error ( figures . cross ) + ' ' + err . message ) ;
179
- logger . exit ( 1 ) ;
180
- } else {
181
- // Rethrow so it becomes an uncaught exception.
182
- throw err ;
183
- }
25
+ console . error ( '\n ' + err . message ) ;
26
+ process . exit ( 1 ) ;
184
27
}
185
- } else {
186
- api . run ( files )
187
- . then ( function ( runStatus ) {
188
- logger . finish ( runStatus ) ;
189
- logger . exit ( runStatus . failCount > 0 || runStatus . rejectionCount > 0 || runStatus . exceptionCount > 0 ? 1 : 0 ) ;
190
- } )
191
- . catch ( function ( err ) {
192
- // Don't swallow exceptions. Note that any expected error should already
193
- // have been logged.
194
- setImmediate ( function ( ) {
195
- throw err ;
196
- } ) ;
197
- } ) ;
198
28
}
0 commit comments