diff --git a/src/runner/runner.ts b/src/runner/runner.ts index 8414a8f..dd20232 100644 --- a/src/runner/runner.ts +++ b/src/runner/runner.ts @@ -22,6 +22,8 @@ export class TestRunner extends vscode.Disposable { // granular filters yet (coming in Vitest 1.4.1) private testRunsByFile = new Map() + private _onRequestsExhausted = new vscode.EventEmitter() + constructor( private readonly controller: vscode.TestController, private readonly tree: TestTree, @@ -34,6 +36,7 @@ export class TestRunner extends vscode.Disposable { this.simpleTestRunRequest = null this.continuousRequests.clear() this.api.cancelRun() + this._onRequestsExhausted.dispose() }) api.onWatcherRerun((files, _trigger, collecting) => !collecting && this.startTestRun(files)) @@ -122,8 +125,10 @@ export class TestRunner extends vscode.Disposable { token.onCancellationRequested(() => { this.continuousRequests.delete(request) - if (!this.continuousRequests.size) + if (!this.continuousRequests.size) { + this._onRequestsExhausted.fire() this.api.unwatchTests() + } }) if (!request.include?.length) { @@ -146,8 +151,13 @@ export class TestRunner extends vscode.Disposable { return } + const { dispose } = this._onRequestsExhausted.event(() => { + this.api.disableCoverage() + dispose() + }) + token.onCancellationRequested(() => { - // this.api.disableCoverage() + this.api.disableCoverage() }) await this.runTests(request, token) @@ -183,6 +193,7 @@ export class TestRunner extends vscode.Disposable { } this.simpleTestRunRequest = null + this._onRequestsExhausted.fire() } private getTestRunByData(data: TestData): vscode.TestRun | null {