Skip to content

Commit 9721413

Browse files
committed
test(test-setup): prepare logger spies, silence logs unless --verbose
1 parent 471c847 commit 9721413

File tree

6 files changed

+57
-0
lines changed

6 files changed

+57
-0
lines changed

nx.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
],
2929
"test-vitest-inputs": [
3030
"os",
31+
{
32+
"env": "NX_VERBOSE_LOGGING"
33+
},
3134
{
3235
"externalDependencies": ["vitest"]
3336
}

packages/utils/src/lib/logging.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { cliui } from '@poppinss/cliui';
33
import { underline } from 'ansis';
44
import { TERMINAL_WIDTH } from './reports/constants.js';
55

6+
// TODO: remove once logger is used everywhere
7+
68
// eslint-disable-next-line @typescript-eslint/no-explicit-any
79
type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
810
export type CliUiBase = ReturnType<typeof cliui>;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { beforeAll, beforeEach, vi } from 'vitest';
22

3+
// TODO: remove once logger is used everywhere
4+
35
beforeAll(async () => {
46
const utils: typeof import('@code-pushup/utils') =
57
await vi.importActual('@code-pushup/utils');

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { type MockInstance, afterEach, beforeEach, vi } from 'vitest';
22

3+
// TODO: remove once logger is used everywhere
4+
35
let consoleInfoSpy: MockInstance<any[], void> | undefined;
46
let consoleWarnSpy: MockInstance<any[], void> | undefined;
57
let consoleErrorSpy: MockInstance<any[], void> | undefined;

testing/test-setup/src/lib/extend/ui-logger.matcher.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {
88
hasExpectedMessage,
99
} from './ui-logger.matcher.utils';
1010

11+
// TODO: remove once logger is used everywhere
12+
1113
type CliUi = ReturnType<typeof cliui>;
1214

1315
export type CustomUiLoggerMatchers = {
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { type MockInstance, afterAll, beforeAll, vi } from 'vitest';
2+
import { logger } from '@code-pushup/utils';
3+
4+
const loggerSpies: MockInstance[] = [];
5+
6+
beforeAll(() => {
7+
// TODO: use vi.mockObject after Vitest update: https://vitest.dev/api/vi.html#vi-mockobject-3-2-0
8+
if (process.env['NX_VERBOSE_LOGGING'] === 'true') {
9+
// only track calls, but preserve original implementation so logs are printed
10+
loggerSpies.push(
11+
vi.spyOn(logger, 'error'),
12+
vi.spyOn(logger, 'warn'),
13+
vi.spyOn(logger, 'info'),
14+
vi.spyOn(logger, 'debug'),
15+
vi.spyOn(logger, 'newline'),
16+
vi.spyOn(logger, 'group'),
17+
vi.spyOn(logger, 'task'),
18+
vi.spyOn(logger, 'command'),
19+
);
20+
} else {
21+
// track calls and silence logs
22+
loggerSpies.push(
23+
vi.spyOn(logger, 'error').mockImplementation(() => {}),
24+
vi.spyOn(logger, 'warn').mockImplementation(() => {}),
25+
vi.spyOn(logger, 'info').mockImplementation(() => {}),
26+
vi.spyOn(logger, 'debug').mockImplementation(() => {}),
27+
vi.spyOn(logger, 'newline').mockImplementation(() => {}),
28+
// make sure worker still gets executed
29+
vi.spyOn(logger, 'group').mockImplementation(async (_, worker) => {
30+
await worker();
31+
}),
32+
vi.spyOn(logger, 'task').mockImplementation(async (_, worker) => {
33+
await worker();
34+
}),
35+
vi.spyOn(logger, 'command').mockImplementation(async (_, worker) => {
36+
await worker();
37+
}),
38+
);
39+
}
40+
});
41+
42+
afterAll(() => {
43+
loggerSpies.forEach(loggerSpy => {
44+
loggerSpy.mockRestore();
45+
});
46+
});

0 commit comments

Comments
 (0)