diff --git a/packages/vitest/src/typecheck/collect.ts b/packages/vitest/src/typecheck/collect.ts index 0c777848292d..2b6498cd1aef 100644 --- a/packages/vitest/src/typecheck/collect.ts +++ b/packages/vitest/src/typecheck/collect.ts @@ -99,9 +99,8 @@ export async function collectTests(ctx: WorkspaceProject, filepath: string): Pro }) let lastSuite: ParsedSuite = file const updateLatestSuite = (index: number) => { - const suite = lastSuite - while (lastSuite !== file && lastSuite.end < index) - lastSuite = suite.suite as ParsedSuite + while (lastSuite.suite && lastSuite.end < index) + lastSuite = lastSuite.suite as ParsedSuite return lastSuite } definitions.sort((a, b) => a.start - b.start).forEach((definition) => { diff --git a/test/typescript/test-d/nested-suite1.test-d.ts b/test/typescript/test-d/nested-suite1.test-d.ts new file mode 100644 index 000000000000..0e97fd7ced0e --- /dev/null +++ b/test/typescript/test-d/nested-suite1.test-d.ts @@ -0,0 +1,11 @@ +import { describe, test } from 'vitest' + +describe('suite-A', () => { + describe('suite-B', () => { + test('case-X', () => { + }) + }) +}) + +test('case-Y', () => { +}) diff --git a/test/typescript/test-d/nested-suite2.test-d.ts b/test/typescript/test-d/nested-suite2.test-d.ts new file mode 100644 index 000000000000..ce02baedd072 --- /dev/null +++ b/test/typescript/test-d/nested-suite2.test-d.ts @@ -0,0 +1,18 @@ +import { describe, test } from 'vitest' + +describe('suite-A', () => { + describe('suite-B', () => { + test('case-X', () => { + }) + + describe('suite-C', () => { + test('case-Y', () => { + }) + }) + }) + + describe('suite-D', () => { + test('case-Z', () => { + }) + }) +})