Skip to content

Commit 6c3a84c

Browse files
committed
test(ci): reuse test-friendly ora mock across all projects
1 parent 5eeaf54 commit 6c3a84c

File tree

2 files changed

+30
-28
lines changed

2 files changed

+30
-28
lines changed

packages/utils/src/lib/logger.int.test.ts

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,6 @@ import process from 'node:process';
66
import type { MockInstance } from 'vitest';
77
import { Logger } from './logger.js';
88

9-
// customize ora options for test environment
10-
vi.mock('ora', async (): Promise<typeof import('ora')> => {
11-
const oraModule = await vi.importActual<typeof import('ora')>('ora');
12-
return {
13-
...oraModule,
14-
default: options => {
15-
const spinner = oraModule.default({
16-
// skip cli-cursor package
17-
hideCursor: false,
18-
// skip is-interactive package
19-
isEnabled: process.env['CI'] !== 'true',
20-
// skip is-unicode-supported package
21-
spinner: cliSpinners.dots,
22-
// preserve other options
23-
...(typeof options === 'string' ? { text: options } : options),
24-
});
25-
// skip log-symbols package
26-
vi.spyOn(spinner, 'succeed').mockImplementation(text =>
27-
spinner.stopAndPersist({ text, symbol: ansis.green('✔') }),
28-
);
29-
vi.spyOn(spinner, 'fail').mockImplementation(text =>
30-
spinner.stopAndPersist({ text, symbol: ansis.red('✖') }),
31-
);
32-
return spinner;
33-
},
34-
};
35-
});
36-
379
describe('Logger', () => {
3810
let stdout: string;
3911
let consoleLogSpy: MockInstance<unknown[], void>;

testing/test-setup/src/lib/logger.mock.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import ansis from 'ansis';
2+
import cliSpinners from 'cli-spinners';
13
import { type MockInstance, afterAll, beforeAll, vi } from 'vitest';
24

35
const loggerSpies: MockInstance[] = [];
@@ -45,3 +47,31 @@ afterAll(() => {
4547
loggerSpy.mockRestore();
4648
});
4749
});
50+
51+
// customize ora options for test environment
52+
vi.mock('ora', async (): Promise<typeof import('ora')> => {
53+
const oraModule = await vi.importActual<typeof import('ora')>('ora');
54+
return {
55+
...oraModule,
56+
default: options => {
57+
const spinner = oraModule.default({
58+
// skip cli-cursor package
59+
hideCursor: false,
60+
// skip is-interactive package
61+
isEnabled: process.env['CI'] !== 'true',
62+
// skip is-unicode-supported package
63+
spinner: cliSpinners.dots,
64+
// preserve other options
65+
...(typeof options === 'string' ? { text: options } : options),
66+
});
67+
// skip log-symbols package
68+
vi.spyOn(spinner, 'succeed').mockImplementation(text =>
69+
spinner.stopAndPersist({ text, symbol: ansis.green('✔') }),
70+
);
71+
vi.spyOn(spinner, 'fail').mockImplementation(text =>
72+
spinner.stopAndPersist({ text, symbol: ansis.red('✖') }),
73+
);
74+
return spinner;
75+
},
76+
};
77+
});

0 commit comments

Comments
 (0)