Skip to content

Commit a0057fe

Browse files
committed
test(utils): make spinner symbols os-indepedent in tests
1 parent 73f04a8 commit a0057fe

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

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

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import ansis from 'ansis';
22
import cliSpinners from 'cli-spinners';
3-
import logSymbols from 'log-symbols';
43
import os from 'node:os';
4+
import process from 'node:process';
55
import type { MockInstance } from 'vitest';
66
import { Logger } from './logger.js';
77

@@ -10,15 +10,26 @@ vi.mock('ora', async (): Promise<typeof import('ora')> => {
1010
const exports = await vi.importActual<typeof import('ora')>('ora');
1111
return {
1212
...exports,
13-
default: options =>
14-
exports.default({
13+
default: options => {
14+
const spinner = exports.default({
1515
// skip cli-cursor package
1616
hideCursor: false,
1717
// skip is-interactive package
1818
isEnabled: process.env['CI'] !== 'true',
19+
// skip is-unicode-supported package
20+
spinner: cliSpinners.dots,
1921
// preserve other options
2022
...(typeof options === 'string' ? { text: options } : options),
21-
}),
23+
});
24+
// skip log-symbols package
25+
vi.spyOn(spinner, 'succeed').mockImplementation(text =>
26+
spinner.stopAndPersist({ text, symbol: ansis.green('✔') }),
27+
);
28+
vi.spyOn(spinner, 'fail').mockImplementation(text =>
29+
spinner.stopAndPersist({ text, symbol: ansis.red('✖') }),
30+
);
31+
return spinner;
32+
},
2233
};
2334
});
2435

@@ -308,7 +319,7 @@ ${ansis.magenta('└')} ${ansis.green(`Total line coverage is ${ansis.bold('82%'
308319
await expect(task).resolves.toBeUndefined();
309320

310321
expect(output).toBe(
311-
`${logSymbols.success} Uploaded report to portal ${ansis.gray('(42 ms)')}\n`,
322+
`${ansis.green('✔')} Uploaded report to portal ${ansis.gray('(42 ms)')}\n`,
312323
);
313324
});
314325

@@ -322,7 +333,7 @@ ${ansis.magenta('└')} ${ansis.green(`Total line coverage is ${ansis.bold('82%'
322333
await expect(task).rejects.toThrow('GraphQL error: Invalid API key');
323334

324335
expect(output).toBe(
325-
`${logSymbols.error} Uploading report to portal → ${ansis.red('Error: GraphQL error: Invalid API key')}\n`,
336+
`${ansis.red('✖')} Uploading report to portal → ${ansis.red('Error: GraphQL error: Invalid API key')}\n`,
326337
);
327338
});
328339

@@ -341,7 +352,7 @@ ${ansis.magenta('└')} ${ansis.green(`Total line coverage is ${ansis.bold('82%'
341352
expect(output).toBe(
342353
`
343354
- Uploading report to portal
344-
${logSymbols.success} Uploaded report to portal ${ansis.gray('(42 ms)')}
355+
${ansis.green('✔')} Uploaded report to portal ${ansis.gray('(42 ms)')}
345356
`.trimStart(),
346357
);
347358
});
@@ -361,7 +372,7 @@ ${logSymbols.success} Uploaded report to portal ${ansis.gray('(42 ms)')}
361372

362373
expect(output).toBe(
363374
`
364-
${logSymbols.error} Uploading report to portal ${ansis.red.bold('[SIGINT]')}
375+
${ansis.red('✖')} Uploading report to portal ${ansis.red.bold('[SIGINT]')}
365376
366377
${ansis.red.bold('Cancelled by SIGINT')}
367378
`.trimStart(),
@@ -390,7 +401,7 @@ ${ansis.red.bold('Cancelled by SIGINT')}
390401

391402
expect(output).toBe(
392403
`
393-
${logSymbols.success} Uploaded report to portal ${ansis.gray('(42 ms)')}
404+
${ansis.green('✔')} Uploaded report to portal ${ansis.gray('(42 ms)')}
394405
${ansis.gray('Sent request to Portal API')}
395406
${ansis.gray('Received response from Portal API')}
396407
`.trimStart(),
@@ -417,7 +428,7 @@ ${logSymbols.success} Uploaded report to portal ${ansis.gray('(42 ms)')}
417428

418429
expect(output).toBe(
419430
`
420-
${logSymbols.error} Uploading report to portal → ${ansis.red('Error: GraphQL error: Invalid API key')}
431+
${ansis.red('✖')} Uploading report to portal → ${ansis.red('Error: GraphQL error: Invalid API key')}
421432
${ansis.gray('Sent request to Portal API')}
422433
${ansis.gray('Received response from Portal API')}
423434
`.trimStart(),
@@ -470,7 +481,7 @@ ${logSymbols.error} Uploading report to portal → ${ansis.red('Error: GraphQL e
470481
await expect(command).resolves.toBeUndefined();
471482

472483
expect(output).toBe(
473-
`${logSymbols.success} ${ansis.green('$')} npx eslint . --format=json ${ansis.gray('(42 ms)')}\n`,
484+
`${ansis.green('✔')} ${ansis.green('$')} npx eslint . --format=json ${ansis.gray('(42 ms)')}\n`,
474485
);
475486
});
476487

@@ -489,7 +500,7 @@ ${logSymbols.error} Uploading report to portal → ${ansis.red('Error: GraphQL e
489500
await expect(command).rejects.toThrow('Process failed with exit code 1');
490501

491502
expect(output).toBe(
492-
`${logSymbols.error} ${ansis.red('$')} npx eslint . --format=json\n`,
503+
`${ansis.red('✖')} ${ansis.red('$')} npx eslint . --format=json\n`,
493504
);
494505
});
495506
});

0 commit comments

Comments
 (0)