Skip to content

Commit c061c41

Browse files
committed
test(coverage): cover basics/spawn spinner stop+fail/success branches
Adds tests with a mock spinner to exercise: - spinner stop+fail when basics process exits non-zero (lines 362-363) - spinner stop+success on successful basics scan (lines 376-377) - spinner stop+fail when basicsResult is null (lines 350-351) basics/spawn.mts: 83.78% → 90.99% statements (83.95% → 88.88% branch).
1 parent 68ddd26 commit c061c41

1 file changed

Lines changed: 68 additions & 0 deletions

File tree

packages/cli/test/unit/utils/basics/spawn.test.mts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)