From b5bf32907fae8b8b4508689a32205f94056a721e Mon Sep 17 00:00:00 2001 From: Dunqing Date: Thu, 7 Sep 2023 16:50:18 +0800 Subject: [PATCH] fix(runner): incorrect test name pattern matching (#4071) --- packages/runner/src/utils/collect.ts | 3 ++- test/filters/test/testname-pattern.test.ts | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/runner/src/utils/collect.ts b/packages/runner/src/utils/collect.ts index b163bae7f716..9eeee4267833 100644 --- a/packages/runner/src/utils/collect.ts +++ b/packages/runner/src/utils/collect.ts @@ -46,7 +46,8 @@ export function interpretTaskModes(suite: Suite, namePattern?: string | RegExp, } function getTaskFullName(task: TaskBase): string { - return `${task.suite ? `${getTaskFullName(task.suite)} ` : ''}${task.name}` + const fullName = task.suite ? getTaskFullName(task.suite) : null + return fullName ? `${fullName} ${task.name}` : task.name } export function someTasksAreOnly(suite: Suite): boolean { diff --git a/test/filters/test/testname-pattern.test.ts b/test/filters/test/testname-pattern.test.ts index 6a134c6c1615..40fd9cadc4bf 100644 --- a/test/filters/test/testname-pattern.test.ts +++ b/test/filters/test/testname-pattern.test.ts @@ -30,3 +30,14 @@ test('match by pattern that also matches current working directory', async () => expect(stdout).toMatch('Test Files 1 passed (1)') expect(stdout).not.toMatch('test/example.test.ts') }) + +test('match by test name pattern with ^', async () => { + const { stdout } = await runVitest({ + root: './fixtures', + testNamePattern: '^this', + }, ['filters']) + + expect(stdout).toMatch('✓ test/filters.test.ts > this will pass') + expect(stdout).toMatch('Test Files 1 passed (1)') + expect(stdout).not.toMatch('test/example.test.ts') +})