Skip to content

Commit cf25ad8

Browse files
Merge pull request #22 from gjsjohnmurray/fix-20
Add manual refresh to test trees, and automatic refresh when client setting changes
2 parents 29279e0 + f8ae7b5 commit cf25ad8

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export async function activate(context: vscode.ExtensionContext) {
8181
// Other parts of this extension will use the test controllers
8282
localTestController = vscode.tests.createTestController(`${extensionId}-Local`, '$(folder-library) Local Tests');
8383
context.subscriptions.push(localTestController);
84-
await setupLocalTestsController();
84+
context.subscriptions.push(await setupLocalTestsController());
8585

8686
loadedTestController = vscode.tests.createTestController(`${extensionId}-Loaded`, '$(server-environment) Server Tests');
8787
context.subscriptions.push(loadedTestController);

src/historyExplorer.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@ export async function setupHistoryExplorerController() {
4242
historyBrowserController.refreshHandler = (token?: vscode.CancellationToken) => {
4343
historyBrowserController.items.replace([historyBrowserController.createTestItem('-', 'loading...')]);
4444
replaceRootItems(historyBrowserController);
45-
}
46-
45+
}
4746
}
4847

4948
export async function serverSpec(item: vscode.TestItem): Promise<IServerSpec | undefined> {

src/localTests.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,29 @@ async function runTestsHandler(request: vscode.TestRunRequest, cancellation: vsc
7979
await commonRunTestsHandler(localTestController, resolveItemChildren, request, cancellation);
8080
}
8181

82-
export async function setupLocalTestsController() {
82+
export async function setupLocalTestsController(): Promise<vscode.Disposable> {
8383
logger.info('setupLocalTestsController invoked');
8484

85+
function showLoadingMessage() {
86+
localTestController.items.replace([localTestController.createTestItem('-', 'loading...')]);
87+
}
88+
8589
localTestController.resolveHandler = resolveItemChildren;
86-
localTestController.items.replace([localTestController.createTestItem('-', 'loading...')]);
90+
showLoadingMessage();
91+
92+
// Add a manual Refresh button
93+
localTestController.refreshHandler = (token?: vscode.CancellationToken) => {
94+
showLoadingMessage();
95+
replaceLocalRootItems(localTestController);
96+
}
97+
98+
// Arrange for automatic refresh if config changes
99+
return vscode.workspace.onDidChangeConfiguration(async ({ affectsConfiguration }) => {
100+
if (affectsConfiguration("intersystems.testingManager.client.relativeTestRoot")) {
101+
showLoadingMessage();
102+
replaceLocalRootItems(localTestController);
103+
}
104+
});
87105
}
88106

89107

src/serverTests.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import logger from './logger';
55
import { makeRESTRequest } from './makeRESTRequest';
66
import { commonRunTestsHandler } from './commonRunTestsHandler';
77

8-
async function resolveItemChildren(item: vscode.TestItem) {
8+
async function resolveItemChildren(item?: vscode.TestItem) {
99
if (item) {
1010
item.busy = true;
1111
const spec = await serverSpec(item);
@@ -77,7 +77,17 @@ async function runTestsHandler(request: vscode.TestRunRequest, cancellation: vsc
7777
export async function setupServerTestsController() {
7878
logger.info('setupServerTestsController invoked');
7979

80+
function showLoadingMessage() {
81+
loadedTestController.items.replace([loadedTestController.createTestItem('-', 'loading...')]);
82+
}
83+
8084
loadedTestController.resolveHandler = resolveItemChildren;
81-
loadedTestController.items.replace([loadedTestController.createTestItem('-', 'loading...')]);
85+
showLoadingMessage();
86+
87+
// Add a manual Refresh button
88+
loadedTestController.refreshHandler = (token?: vscode.CancellationToken) => {
89+
showLoadingMessage();
90+
resolveItemChildren();
91+
}
8292
}
8393

0 commit comments

Comments
 (0)