Skip to content

Commit 5634b33

Browse files
committed
Add test run durations to status updates
1 parent 4655b44 commit 5634b33

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

vscode/src/test/suite/testController.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -857,9 +857,9 @@ suite("TestController", () => {
857857
const cancellationSource = new vscode.CancellationTokenSource();
858858
await controller.runTest(runRequest, cancellationSource.token);
859859

860-
assert.ok(runStub.enqueued.calledWithExactly(testItem));
861-
assert.ok(runStub.started.calledWithExactly(testItem));
862-
assert.ok(runStub.passed.calledWithExactly(testItem));
860+
assert.ok(runStub.enqueued.calledWith(testItem));
861+
assert.ok(runStub.started.calledWith(testItem));
862+
assert.ok(runStub.passed.calledWith(testItem));
863863
assert.ok(runStub.end.calledWithExactly());
864864

865865
createRunStub.restore();
@@ -1008,9 +1008,9 @@ suite("TestController", () => {
10081008
await controller.runTest(runRequest, cancellationSource.token);
10091009
fsStub.restore();
10101010

1011-
assert.ok(runStub.enqueued.calledWithExactly(testItem));
1012-
assert.ok(runStub.started.calledWithExactly(testItem));
1013-
assert.ok(runStub.passed.calledWithExactly(testItem));
1011+
assert.ok(runStub.enqueued.calledWith(testItem));
1012+
assert.ok(runStub.started.calledWith(testItem));
1013+
assert.ok(runStub.passed.calledWith(testItem));
10141014
assert.ok(runStub.end.calledWithExactly());
10151015
assert.ok(
10161016
runStub.appendOutput.calledWithExactly(

vscode/src/testController.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,6 +1275,15 @@ export class TestController {
12751275
) {
12761276
await new Promise<void>((resolve, reject) => {
12771277
const promises: Promise<void>[] = [];
1278+
const startTimestamps = new Map<string, number>();
1279+
const withDuration = (
1280+
id: string,
1281+
callback: (duration?: number) => void,
1282+
) => {
1283+
const startTime = startTimestamps.get(id);
1284+
const duration = startTime ? Date.now() - startTime : undefined;
1285+
callback(duration);
1286+
};
12781287

12791288
const abortController = new AbortController();
12801289
token.onCancellationRequested(() => {
@@ -1326,6 +1335,7 @@ export class TestController {
13261335
(test) => {
13271336
if (test) {
13281337
run.started(test);
1338+
startTimestamps.set(test.id, Date.now());
13291339
}
13301340
},
13311341
),
@@ -1339,7 +1349,9 @@ export class TestController {
13391349
this.findTestItem(params.id, vscode.Uri.parse(params.uri)).then(
13401350
(test) => {
13411351
if (test) {
1342-
run.passed(test);
1352+
withDuration(test.id, (duration) =>
1353+
run.passed(test, duration),
1354+
);
13431355
}
13441356
},
13451357
),
@@ -1353,7 +1365,13 @@ export class TestController {
13531365
this.findTestItem(params.id, vscode.Uri.parse(params.uri)).then(
13541366
(test) => {
13551367
if (test) {
1356-
run.failed(test, new vscode.TestMessage(params.message));
1368+
withDuration(test.id, (duration) =>
1369+
run.failed(
1370+
test,
1371+
new vscode.TestMessage(params.message),
1372+
duration,
1373+
),
1374+
);
13571375
}
13581376
},
13591377
),
@@ -1367,7 +1385,13 @@ export class TestController {
13671385
this.findTestItem(params.id, vscode.Uri.parse(params.uri)).then(
13681386
(test) => {
13691387
if (test) {
1370-
run.errored(test, new vscode.TestMessage(params.message));
1388+
withDuration(test.id, (duration) =>
1389+
run.errored(
1390+
test,
1391+
new vscode.TestMessage(params.message),
1392+
duration,
1393+
),
1394+
);
13711395
}
13721396
},
13731397
),

0 commit comments

Comments
 (0)