@@ -412,6 +412,74 @@ describe('runSocketBasics — basics process result', () => {
412412 }
413413 } )
414414
415+ it ( 'uses spinner stop+fail when basics process exits non-zero (lines 362-363)' , async ( ) => {
416+ const stopSpy = vi . fn ( )
417+ const failSpy = vi . fn ( )
418+ const startSpy = vi . fn ( )
419+ const successSpy = vi . fn ( )
420+ const spinner = {
421+ start : startSpy ,
422+ stop : stopSpy ,
423+ fail : failSpy ,
424+ success : successSpy ,
425+ } as any
426+ mockSpawn . mockImplementation ( async ( _bin , args : string [ ] ) => {
427+ if ( args . includes ( 'socket_basics' ) && args . includes ( '--org' ) ) {
428+ return { code : 1 , stdout : '' , stderr : 'basics boom' }
429+ }
430+ if ( args [ 0 ] === '-c' ) {
431+ return { code : 0 , stdout : '' , stderr : '' }
432+ }
433+ return { code : 0 , stdout : '' , stderr : '' }
434+ } )
435+ const result = await runSocketBasics ( { ...baseOpts , spinner } )
436+ expect ( result . ok ) . toBe ( false )
437+ expect ( stopSpy ) . toHaveBeenCalled ( )
438+ expect ( failSpy ) . toHaveBeenCalled ( )
439+ } )
440+
441+ it ( 'uses spinner stop+success on successful basics scan (lines 376-377)' , async ( ) => {
442+ const stopSpy = vi . fn ( )
443+ const failSpy = vi . fn ( )
444+ const startSpy = vi . fn ( )
445+ const successSpy = vi . fn ( )
446+ const spinner = {
447+ start : startSpy ,
448+ stop : stopSpy ,
449+ fail : failSpy ,
450+ success : successSpy ,
451+ } as any
452+ // Default mock returns code 0 for basics_socket call.
453+ const result = await runSocketBasics ( { ...baseOpts , spinner } )
454+ expect ( result . ok ) . toBe ( true )
455+ expect ( successSpy ) . toHaveBeenCalled ( )
456+ } )
457+
458+ it ( 'uses spinner fail when basicsResult is null (lines 350-351)' , async ( ) => {
459+ const stopSpy = vi . fn ( )
460+ const failSpy = vi . fn ( )
461+ const successSpy = vi . fn ( )
462+ const spinner = {
463+ start : vi . fn ( ) ,
464+ stop : stopSpy ,
465+ fail : failSpy ,
466+ success : successSpy ,
467+ } as any
468+ mockSpawn . mockImplementation ( async ( _bin , args : string [ ] ) => {
469+ if ( args . includes ( 'socket_basics' ) && args . includes ( '--org' ) ) {
470+ // null result simulates spawn failure to start.
471+ return null as any
472+ }
473+ if ( args [ 0 ] === '-c' ) {
474+ return { code : 0 , stdout : '' , stderr : '' }
475+ }
476+ return { code : 0 , stdout : '' , stderr : '' }
477+ } )
478+ const result = await runSocketBasics ( { ...baseOpts , spinner } )
479+ expect ( result . ok ) . toBe ( false )
480+ expect ( failSpy ) . toHaveBeenCalled ( )
481+ } )
482+
415483 it ( 'errors when facts file is not created' , async ( ) => {
416484 // existsSync(python) returns true, existsSync(factsPath) returns false.
417485 let callIndex = 0
0 commit comments