From ba091d11f78414aa74ed9c833a4a8999f1163576 Mon Sep 17 00:00:00 2001 From: wenzhe Date: Wed, 28 Dec 2022 22:39:24 +0800 Subject: [PATCH 1/5] fix(cli): allow overrides reporter via cli option --- packages/vitest/src/node/config.ts | 12 +++++++----- test/reporters/fixtures/vitest.config.ts | 3 +++ test/reporters/tests/reporters.spec.ts | 19 +++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index cc57f4153a37..b2ecead8d8ec 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -198,11 +198,13 @@ export function resolveConfig( resolved.related = toArray(options.related).map(file => resolve(resolved.root, file)) if (mode !== 'benchmark') { - resolved.reporters = Array.from(new Set([ - ...toArray(resolved.reporters), - // @ts-expect-error from CLI - ...toArray(resolved.reporter), - ])).filter(Boolean) + // @ts-expect-error from CLI + const reporter = resolved.reporter + resolved.reporters = reporter + ? toArray(reporter) + : Array.from(new Set( + toArray(resolved.reporters)), + ).filter(Boolean) } if (!resolved.reporters.length) diff --git a/test/reporters/fixtures/vitest.config.ts b/test/reporters/fixtures/vitest.config.ts index 1b3a79748ed4..f6be0c1dd611 100644 --- a/test/reporters/fixtures/vitest.config.ts +++ b/test/reporters/fixtures/vitest.config.ts @@ -1,4 +1,7 @@ import { defineConfig } from 'vitest/config' export default defineConfig({ + test: { + reporters: 'default', + }, }) diff --git a/test/reporters/tests/reporters.spec.ts b/test/reporters/tests/reporters.spec.ts index d26db9b953b7..23e3b9d645cc 100644 --- a/test/reporters/tests/reporters.spec.ts +++ b/test/reporters/tests/reporters.spec.ts @@ -1,6 +1,7 @@ import { existsSync, readFileSync, rmSync } from 'fs' import { afterEach, expect, test, vi } from 'vitest' import { normalize, resolve } from 'pathe' +import { execa } from 'execa' import { JsonReporter } from '../../../packages/vitest/src/node/reporters/json' import { JUnitReporter } from '../../../packages/vitest/src/node/reporters/junit' import { TapReporter } from '../../../packages/vitest/src/node/reporters/tap' @@ -342,6 +343,24 @@ test('json reporter with outputFile object in non-existing directory', async () rmSync(rootDirectory, { recursive: true }) }) +const skip = (process.platform === 'win32' || process.platform === 'darwin') && process.env.CI +test.skipIf(skip)('Cli can overrides reporters by --reporter', async () => { + const root = resolve(__dirname, '../fixtures') + const { stdout } = await execa('npx', ['vitest', 'run', 'all-passing-or-skipped.test.ts', '--reporter=json'], { + cwd: root, + env: { + ...process.env, + CI: 'true', + NO_COLOR: 'true', + }, + stdio: 'pipe', + }).catch(e => e) + + expect(() => { + JSON.parse(stdout) + }).not.toThrowError() +}) + /** * Ensure environment and OS specific paths are consistent in snapshots */ From e9e13b18f9d867e491cde68faa5e5fc5f731551c Mon Sep 17 00:00:00 2001 From: mysteryven Date: Thu, 29 Dec 2022 08:11:27 +0800 Subject: [PATCH 2/5] refactor: use ?? Co-authored-by: Vladimir --- packages/vitest/src/node/config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index b2ecead8d8ec..dc186e5b8b53 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -199,7 +199,8 @@ export function resolveConfig( if (mode !== 'benchmark') { // @ts-expect-error from CLI - const reporter = resolved.reporter + const reporters = resolved.reporter ?? resolved.reporters + resolved.reporters = Array.from(new Set(toArray(reporters))).filter(Boolean) resolved.reporters = reporter ? toArray(reporter) : Array.from(new Set( From 6950444738b140adc9f44f93a0dc44c2da17894f Mon Sep 17 00:00:00 2001 From: wenzhe Date: Thu, 29 Dec 2022 14:43:16 +0800 Subject: [PATCH 3/5] refactor: remove unused codes --- packages/vitest/src/node/config.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/vitest/src/node/config.ts b/packages/vitest/src/node/config.ts index dc186e5b8b53..882299efd112 100644 --- a/packages/vitest/src/node/config.ts +++ b/packages/vitest/src/node/config.ts @@ -201,11 +201,6 @@ export function resolveConfig( // @ts-expect-error from CLI const reporters = resolved.reporter ?? resolved.reporters resolved.reporters = Array.from(new Set(toArray(reporters))).filter(Boolean) - resolved.reporters = reporter - ? toArray(reporter) - : Array.from(new Set( - toArray(resolved.reporters)), - ).filter(Boolean) } if (!resolved.reporters.length) From 20f0c47500b663de3fa9019e1f8ceac89daca59f Mon Sep 17 00:00:00 2001 From: wenzhe Date: Fri, 30 Dec 2022 11:54:02 +0800 Subject: [PATCH 4/5] chore: add timeout --- test/reporters/tests/reporters.spec.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/reporters/tests/reporters.spec.ts b/test/reporters/tests/reporters.spec.ts index 23e3b9d645cc..c712f676b1b0 100644 --- a/test/reporters/tests/reporters.spec.ts +++ b/test/reporters/tests/reporters.spec.ts @@ -344,8 +344,9 @@ test('json reporter with outputFile object in non-existing directory', async () }) const skip = (process.platform === 'win32' || process.platform === 'darwin') && process.env.CI +const root = resolve(__dirname, '../fixtures') + test.skipIf(skip)('Cli can overrides reporters by --reporter', async () => { - const root = resolve(__dirname, '../fixtures') const { stdout } = await execa('npx', ['vitest', 'run', 'all-passing-or-skipped.test.ts', '--reporter=json'], { cwd: root, env: { @@ -359,7 +360,7 @@ test.skipIf(skip)('Cli can overrides reporters by --reporter', async () => { expect(() => { JSON.parse(stdout) }).not.toThrowError() -}) +}, 60_000) /** * Ensure environment and OS specific paths are consistent in snapshots From 76ceaffe601f3425dabc04dd8ae2e6e1ba854f8e Mon Sep 17 00:00:00 2001 From: wenzhe Date: Sat, 31 Dec 2022 10:55:00 +0800 Subject: [PATCH 5/5] chore: change test --- test/reporters/fixtures/vitest.config.ts | 3 --- test/reporters/tests/custom-reporter.spec.ts | 6 ++++++ test/reporters/tests/reporters.spec.ts | 20 -------------------- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/test/reporters/fixtures/vitest.config.ts b/test/reporters/fixtures/vitest.config.ts index f6be0c1dd611..1b3a79748ed4 100644 --- a/test/reporters/fixtures/vitest.config.ts +++ b/test/reporters/fixtures/vitest.config.ts @@ -1,7 +1,4 @@ import { defineConfig } from 'vitest/config' export default defineConfig({ - test: { - reporters: 'default', - }, }) diff --git a/test/reporters/tests/custom-reporter.spec.ts b/test/reporters/tests/custom-reporter.spec.ts index 9524bf911726..e3598aa361b5 100644 --- a/test/reporters/tests/custom-reporter.spec.ts +++ b/test/reporters/tests/custom-reporter.spec.ts @@ -71,4 +71,10 @@ describe.concurrent('custom reporters', () => { const stdout = await runWithRetry('--config', 'without-custom-reporter.vitest.config.ts', '--reporter', customJSReporterPath) expect(stdout).includes('hello from custom reporter') }, TIMEOUT) + + test('overrides reporters by given a CLI argument --reporter works', async () => { + const stdout = await runWithRetry('--config', 'deps-reporter.vitest.config.ts', '--reporter', customJSReporterPath) + expect(stdout).not.includes('hello from package reporter') + expect(stdout).includes('hello from custom reporter') + }, TIMEOUT) }) diff --git a/test/reporters/tests/reporters.spec.ts b/test/reporters/tests/reporters.spec.ts index c712f676b1b0..d26db9b953b7 100644 --- a/test/reporters/tests/reporters.spec.ts +++ b/test/reporters/tests/reporters.spec.ts @@ -1,7 +1,6 @@ import { existsSync, readFileSync, rmSync } from 'fs' import { afterEach, expect, test, vi } from 'vitest' import { normalize, resolve } from 'pathe' -import { execa } from 'execa' import { JsonReporter } from '../../../packages/vitest/src/node/reporters/json' import { JUnitReporter } from '../../../packages/vitest/src/node/reporters/junit' import { TapReporter } from '../../../packages/vitest/src/node/reporters/tap' @@ -343,25 +342,6 @@ test('json reporter with outputFile object in non-existing directory', async () rmSync(rootDirectory, { recursive: true }) }) -const skip = (process.platform === 'win32' || process.platform === 'darwin') && process.env.CI -const root = resolve(__dirname, '../fixtures') - -test.skipIf(skip)('Cli can overrides reporters by --reporter', async () => { - const { stdout } = await execa('npx', ['vitest', 'run', 'all-passing-or-skipped.test.ts', '--reporter=json'], { - cwd: root, - env: { - ...process.env, - CI: 'true', - NO_COLOR: 'true', - }, - stdio: 'pipe', - }).catch(e => e) - - expect(() => { - JSON.parse(stdout) - }).not.toThrowError() -}, 60_000) - /** * Ensure environment and OS specific paths are consistent in snapshots */