diff --git a/test-provider-sample/src/parser.ts b/test-provider-sample/src/parser.ts index d59beebc..03c2139a 100644 --- a/test-provider-sample/src/parser.ts +++ b/test-provider-sample/src/parser.ts @@ -23,7 +23,7 @@ export const parseMarkdown = (text: string, events: { if (heading) { const [, pounds, name] = heading; const range = new vscode.Range(new vscode.Position(lineNo, 0), new vscode.Position(lineNo, line.length)); - events.onHeading(range, name, Number(pounds)); + events.onHeading(range, name, pounds.length); } } }; diff --git a/test-provider-sample/src/testController.ts b/test-provider-sample/src/testController.ts index a06e2dde..f9aa7958 100644 --- a/test-provider-sample/src/testController.ts +++ b/test-provider-sample/src/testController.ts @@ -32,13 +32,13 @@ export class MathTestController implements vscode.TestController run.end()); } } @@ -208,10 +208,11 @@ class TestFile { const parent = ancestors[ancestors.length - 1]; const thead = TestHeading.create(name, range, thisGeneration, parent); const existing = parent.children.get(thead.id); - if (existing instanceof TestHeading) { + if (existing && existing.data instanceof TestHeading) { ancestors.push(existing); existing.data.generation = thisGeneration; } else { + existing?.dispose(); parent.addChild(thead); ancestors.push(thead); } @@ -243,11 +244,14 @@ class TestFile { class TestHeading { public static create(label: string, range: vscode.Range, generation: number, parent: vscode.TestItem) { - return vscode.test.createTestItem({ + const item = vscode.test.createTestItem({ id: `mktests/${parent.uri.toString()}/${label}`, label, uri: parent.uri, }, new TestHeading(generation)); + + item.range = range; + return item; } protected constructor(public generation: number) { } @@ -287,7 +291,7 @@ class TestCase { ) { } async run(options: vscode.TestRunTask): Promise { - await new Promise(resolve => setTimeout(resolve, 200 + Math.random() * 3000)); + await new Promise(resolve => setTimeout(resolve, 1000 + Math.random() * 1000)); const start = Date.now(); const actual = this.evaluate(); const duration = Date.now() - start;