diff --git a/packages/vitest/src/node/core.ts b/packages/vitest/src/node/core.ts index 9a93c90e6bb7..af6e1122628e 100644 --- a/packages/vitest/src/node/core.ts +++ b/packages/vitest/src/node/core.ts @@ -644,7 +644,7 @@ export class Vitest { if (mm.isMatch(id, this.config.forceRerunTriggers)) { this.state.getFilepaths().forEach(file => this.changedTests.add(file)) - return [] + return [id] } const projects = this.getModuleProjects(id) diff --git a/test/watch/fixtures/force-watch/trigger.js b/test/watch/fixtures/force-watch/trigger.js new file mode 100644 index 000000000000..2e2b68e75b83 --- /dev/null +++ b/test/watch/fixtures/force-watch/trigger.js @@ -0,0 +1 @@ +export const trigger = false diff --git a/test/watch/fixtures/vitest.config.ts b/test/watch/fixtures/vitest.config.ts index 7d418e5cca77..623e5e267490 100644 --- a/test/watch/fixtures/vitest.config.ts +++ b/test/watch/fixtures/vitest.config.ts @@ -10,5 +10,9 @@ export default defineConfig({ // This configuration is edited by tests reporters: 'verbose', + + forceRerunTriggers: [ + '**/force-watch/**', + ], }, }) diff --git a/test/watch/test/file-watching.test.ts b/test/watch/test/file-watching.test.ts index 877e61346b59..b5f3aebea7a0 100644 --- a/test/watch/test/file-watching.test.ts +++ b/test/watch/test/file-watching.test.ts @@ -12,6 +12,9 @@ const testFileContent = readFileSync(testFile, 'utf-8') const configFile = 'fixtures/vitest.config.ts' const configFileContent = readFileSync(configFile, 'utf-8') +const forceTriggerFile = 'fixtures/force-watch/trigger.js' +const forceTriggerFileContent = readFileSync(forceTriggerFile, 'utf-8') + const cliArgs = ['--root', 'fixtures', '--watch'] const cleanups: (() => void)[] = [] @@ -26,6 +29,7 @@ afterEach(() => { writeFileSync(sourceFile, sourceFileContent, 'utf8') writeFileSync(testFile, testFileContent, 'utf8') writeFileSync(configFile, configFileContent, 'utf8') + writeFileSync(forceTriggerFile, forceTriggerFileContent, 'utf8') cleanups.splice(0).forEach(cleanup => cleanup()) }) @@ -39,6 +43,18 @@ test('editing source file triggers re-run', async () => { await vitest.waitForStdout('1 passed') }) +test('editing force rerun trigger reruns all tests', async () => { + const vitest = await runVitestCli(...cliArgs) + + writeFileSync(forceTriggerFile, editFile(forceTriggerFileContent), 'utf8') + + await vitest.waitForStdout('Waiting for file changes...') + await vitest.waitForStdout('RERUN ../force-watch/trigger.js') + await vitest.waitForStdout('example.test.ts') + await vitest.waitForStdout('math.test.ts') + await vitest.waitForStdout('2 passed') +}) + test('editing test file triggers re-run', async () => { const vitest = await runVitestCli(...cliArgs)