@@ -16,6 +16,9 @@ import argsUtils from './util/args'
16
16
import { telemetry } from '@packages/telemetry'
17
17
import { getCtx , hasCtx } from '@packages/data-context'
18
18
import { warning as errorsWarning } from './errors'
19
+ import pkg from '@packages/root'
20
+ import { info } from './modes/info'
21
+ import { toNumber } from 'lodash'
19
22
20
23
const debug = Debug ( 'cypress:server:cypress' )
21
24
@@ -206,74 +209,85 @@ export = {
206
209
} )
207
210
} ,
208
211
209
- startInMode ( mode : Mode , options : any ) {
212
+ async startInMode ( mode : Mode , options : any ) {
210
213
debug ( 'starting in mode %s with options %o' , mode , options )
211
214
212
215
switch ( mode ) {
213
216
case 'version' :
214
- return require ( './modes/pkg' ) ( options )
215
- . get ( 'version' )
216
- . then ( ( version : any ) => {
217
- return console . log ( version ) // eslint-disable-line no-console
218
- } ) . then ( exit0 )
219
- . catch ( exitErr )
217
+ try {
218
+ console . log ( pkg . version ) // eslint-disable-line no-console
220
219
220
+ return exit0 ( )
221
+ } catch ( err ) {
222
+ return exitErr ( err )
223
+ }
221
224
case 'info' :
222
- return require ( './modes/info' ) ( options )
223
- . then ( exit0 )
224
- . catch ( exitErr )
225
+ try {
226
+ await info ( )
225
227
228
+ return exit0 ( )
229
+ } catch ( err ) {
230
+ return exitErr ( err )
231
+ }
226
232
case 'smokeTest' :
227
- return this . runElectron ( mode , options )
228
- . then ( ( pong : any ) => {
233
+ try {
234
+ const pong = await this . runElectron ( mode , options )
235
+
229
236
if ( ! this . isCurrentlyRunningElectron ( ) ) {
230
- return pong
237
+ return exit ( pong )
231
238
}
232
239
233
240
if ( pong === options . ping ) {
234
- return 0
241
+ return exit ( 0 )
235
242
}
236
243
237
- return 1
238
- } ) . then ( exit )
239
- . catch ( exitErr )
244
+ return exit ( 1 )
245
+ } catch ( err ) {
246
+ return exitErr ( err )
247
+ }
240
248
241
249
case 'returnPkg' :
242
- return require ( './modes/pkg' ) ( options )
243
- . then ( ( pkg : any ) => {
244
- return console . log ( JSON . stringify ( pkg ) ) // eslint-disable-line no-console
245
- } ) . then ( exit0 )
246
- . catch ( exitErr )
250
+ try {
251
+ console . log ( JSON . stringify ( pkg ) ) // eslint-disable-line no-console
252
+
253
+ return exit0 ( )
254
+ } catch ( err ) {
255
+ return exitErr ( err )
256
+ }
247
257
248
258
case 'exitWithCode' :
249
- return require ( './modes/exit' ) ( options )
250
- . then ( exit )
251
- . catch ( exitErr )
259
+ try {
260
+ const exitCode = toNumber ( options . exitWithCode )
252
261
262
+ return exit ( exitCode )
263
+ } catch ( err ) {
264
+ return exitErr ( err )
265
+ }
253
266
case 'run' :
254
267
// run headlessly and exit
255
268
// with num of totalFailed
256
- return this . runElectron ( mode , options )
257
- . then ( ( results : any ) => {
269
+ try {
270
+ const results = await this . runElectron ( mode , options )
271
+
258
272
if ( results . runs ) {
259
273
const isCanceled = results . runs . filter ( ( run ) => run . skippedSpec ) . length
260
274
261
275
if ( isCanceled ) {
262
276
// eslint-disable-next-line no-console
263
277
console . log ( require ( 'chalk' ) . magenta ( '\n Exiting with non-zero exit code because the run was canceled.' ) )
264
278
265
- return 1
279
+ return exit ( 1 )
266
280
}
267
281
}
268
282
269
283
if ( options . posixExitCodes ) {
270
- return results . totalFailed ? 1 : 0
284
+ return exit ( results . totalFailed ? 1 : 0 )
271
285
}
272
286
273
- return results . totalFailed
274
- } )
275
- . then ( exit )
276
- . catch ( exitErr )
287
+ return exit ( results . totalFailed )
288
+ } catch ( err ) {
289
+ return exitErr ( err )
290
+ }
277
291
278
292
case 'interactive' :
279
293
return this . runElectron ( mode , options )
0 commit comments