From 4457ad07679ed88bacc32469b18d48a4b333dcf8 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Wed, 22 Jan 2025 15:57:18 +0100 Subject: [PATCH] test: add test for project change --- test/test-utils/index.ts | 3 +- test/watch/test/change-project.test.ts | 44 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 test/watch/test/change-project.test.ts diff --git a/test/test-utils/index.ts b/test/test-utils/index.ts index a9250df797af..f0f2f7550bf1 100644 --- a/test/test-utils/index.ts +++ b/test/test-utils/index.ts @@ -294,13 +294,14 @@ export function useFS(root: string, structure: Record, config?: UserConfig, + options?: VitestRunnerCLIOptions, ) { const root = resolve(process.cwd(), `vitest-test-${crypto.randomUUID()}`) const fs = useFS(root, structure) const vitest = await runVitest({ root, ...config, - }) + }, [], 'test', {}, options) return { fs, root, diff --git a/test/watch/test/change-project.test.ts b/test/watch/test/change-project.test.ts new file mode 100644 index 000000000000..d38ee1544f6d --- /dev/null +++ b/test/watch/test/change-project.test.ts @@ -0,0 +1,44 @@ +import { expect, test } from 'vitest' +import { runInlineTests } from '../../test-utils' + +test('reruns tests when config changes', async () => { + const { vitest, ctx } = await runInlineTests({ + 'vitest.config.ts': ` + + process.stdin.isTTY = true + process.stdin.setRawMode = () => process.stdin + + export default { + test: { + workspace: [ + './project-1', + './project-2', + ], + }, + }`, + 'project-1/vitest.config.ts': { test: { name: 'project-1' } }, + 'project-1/basic-1.test.ts': /* ts */` + import { test } from 'vitest' + test('basic test 1', () => {}) + `, + 'project-2/vitest.config.ts': { test: { name: 'project-2' } }, + 'project-2/basic-2.test.ts': /* ts */` + import { test } from 'vitest' + test('basic test 2', () => {}) + `, + }, { watch: true }) + + await vitest.waitForStdout('Waiting for file changes') + + expect(vitest.stdout).toContain('2 passed') + expect(vitest.stdout).toContain('basic-1.test.ts') + expect(vitest.stdout).toContain('basic-2.test.ts') + vitest.resetOutput() + + await ctx!.changeProjectName('project-2') + + await vitest.waitForStdout('Waiting for file changes') + + expect(vitest.stdout).toContain('1 passed') + expect(vitest.stdout).toContain('basic-2.test.ts') +})