Skip to content

Commit

Permalink
deep run state update
Browse files Browse the repository at this point in the history
  • Loading branch information
connectdotz committed Aug 18, 2021
1 parent edc49a5 commit bf270d7
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 5 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# vscode-jest

[![Build Status](https://travis-ci.org/jest-community/vscode-jest.svg?branch=master)](https://travis-ci.org/jest-community/vscode-jest) [![Coverage Status](https://coveralls.io/repos/github/jest-community/vscode-jest/badge.svg?branch=master)](https://coveralls.io/github/jest-community/vscode-jest?branch=master) [![Visual Studio Marketplace](https://img.shields.io/visual-studio-marketplace/v/Orta.vscode-jest?color=success&label=Visual%20Studio%20Marketplace)](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest)
[![Build Status](https://github.com/jest-community/vscode-jest/actions/workflows/node-ci.yml/badge.svg)](https://github.com/jest-community/vscode-jest/actions) [![Coverage Status](https://coveralls.io/repos/github/jest-community/vscode-jest/badge.svg?branch=master)](https://coveralls.io/github/jest-community/vscode-jest?branch=master) [![Visual Studio Marketplace](https://img.shields.io/visual-studio-marketplace/v/Orta.vscode-jest?color=success&label=Visual%20Studio%20Marketplace)](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest)

---
## v4.1 with Test Explorer <!-- omit in toc -->
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "vscode-jest",
"displayName": "Jest",
"description": "Use Facebook's Jest With Pleasure.",
"version": "4.1.0-rc.2",
"version": "4.1.0-rc.3",
"publisher": "Orta",
"engines": {
"vscode": "^1.59.0"
Expand Down
11 changes: 8 additions & 3 deletions src/test-provider/test-item-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@ type TestItemRunRequest = JestExtRequestType & { itemRun: TestItemRun };
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const isTestItemRunRequest = (arg: any): arg is TestItemRunRequest =>
arg.itemRun?.item && arg.itemRun?.run && arg.itemRun?.end;

const deepItemState = (item: vscode.TestItem, setState: (item: vscode.TestItem) => void): void => {
setState(item);
item.children.forEach((child) => deepItemState(child, setState));
};
abstract class TestItemDataBase implements TestItemData, JestRunable, WithUri {
item!: vscode.TestItem;
log: Logging;
Expand All @@ -39,7 +44,7 @@ abstract class TestItemDataBase implements TestItemData, JestRunable, WithUri {
scheduleTest(run: vscode.TestRun, end: () => void, profile: vscode.TestRunProfile): void {
const jestRequest = this.getJestRunRequest(profile);
const itemRun: TestItemRun = { item: this.item, run, end };
run.enqueued(this.item);
deepItemState(this.item, run.enqueued);

const process = this.context.ext.session.scheduleProcess({
...jestRequest,
Expand Down Expand Up @@ -276,7 +281,7 @@ export class WorkspaceRoot extends TestItemDataBase {
itemRun = this.createTestItemRun(event);
const text = `Scheduled test run "${event.process.id}" for "${itemRun.item.id}"`;
this.context.appendOutput(text, itemRun.run);
itemRun.run.enqueued(itemRun.item);
deepItemState(itemRun.item, itemRun.run.enqueued);
}

break;
Expand All @@ -290,7 +295,7 @@ export class WorkspaceRoot extends TestItemDataBase {
}
case 'start': {
itemRun = itemRun ?? this.createTestItemRun(event);
itemRun.run.started(itemRun.item);
deepItemState(itemRun.item, itemRun.run.started);
break;
}
case 'end': {
Expand Down
12 changes: 12 additions & 0 deletions tests/test-provider/test-item-data.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1132,6 +1132,18 @@ describe('test-item-data', () => {
});
});
});
it('scheduled and start events will do deep item status update', () => {
const process = mockScheduleProcess(context);
const testFileData = context.getData(testFile);

testFileData.scheduleTest(runMock, resolveMock, profile);
expect(runMock.enqueued).toBeCalledTimes(2);
[testFile, testBlock].forEach((t) => expect(runMock.enqueued).toBeCalledWith(t));

onRunEvent({ type: 'start', process });
expect(runMock.started).toBeCalledTimes(2);
[testFile, testBlock].forEach((t) => expect(runMock.started).toBeCalledWith(t));
});
});
});
});

0 comments on commit bf270d7

Please sign in to comment.