Skip to content

Commit 895e1b4

Browse files
author
Kartik Raj
committed
Fix tests
1 parent b1ea20a commit 895e1b4

File tree

3 files changed

+22
-19
lines changed

3 files changed

+22
-19
lines changed

src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
169169
await updatesDone.promise;
170170
await this.cache.validateCache();
171171
this.cache.flush().ignoreErrors();
172+
const isRefreshComplete = Array.from(this.refreshDeferreds.values()).every((d) => d.completed);
173+
if (isRefreshComplete) {
174+
this.progress.fire({ stage: ProgressReportStage.discoveryFinished });
175+
}
172176
}
173177

174178
/**
@@ -206,7 +210,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
206210
this.refreshStageDeferreds.set(stage, createDeferred<void>());
207211
});
208212
if (ProgressReportStage.allPathsDiscovered && query) {
209-
// Only mark as all paths discovered when querying for all envs.
213+
// Stage all paths discovered not applicable if not querying for all envs.
210214
this.refreshStageDeferreds.delete(ProgressReportStage.allPathsDiscovered);
211215
}
212216
}
@@ -227,13 +231,5 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
227231
this.refreshStageDeferreds.get(stage)?.resolve();
228232
this.refreshStageDeferreds.delete(stage);
229233
});
230-
this.checkIfFinishedAndNotify();
231-
}
232-
233-
private checkIfFinishedAndNotify() {
234-
const isRefreshComplete = Array.from(this.refreshDeferreds.values()).every((d) => d.completed);
235-
if (isRefreshComplete) {
236-
this.progress.fire({ stage: ProgressReportStage.discoveryFinished });
237-
}
238234
}
239235
}

src/test/interpreters/display/progressDisplay.unit.test.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { createDeferred, Deferred } from '../../../client/common/utils/async';
1212
import { Interpreters } from '../../../client/common/utils/localize';
1313
import { IComponentAdapter } from '../../../client/interpreter/contracts';
1414
import { InterpreterLocatorProgressStatubarHandler } from '../../../client/interpreter/display/progressDisplay';
15+
import { ProgressNotificationEvent, ProgressReportStage } from '../../../client/pythonEnvironments/base/locator';
1516
import { noop } from '../../core';
1617

1718
type ProgressTask<R> = (
@@ -20,18 +21,18 @@ type ProgressTask<R> = (
2021
) => Thenable<R>;
2122

2223
suite('Interpreters - Display Progress', () => {
23-
let refreshingCallback: (e: void) => unknown | undefined;
24+
let refreshingCallback: (e: ProgressNotificationEvent) => unknown | undefined;
2425
let refreshDeferred: Deferred<void>;
2526
let componentAdapter: IComponentAdapter;
2627
setup(() => {
2728
refreshDeferred = createDeferred<void>();
2829
componentAdapter = {
2930
// eslint-disable-next-line @typescript-eslint/no-explicit-any
30-
onRefreshStart(listener: (e: void) => any): Disposable {
31+
onProgress(listener: (e: ProgressNotificationEvent) => any): Disposable {
3132
refreshingCallback = listener;
3233
return { dispose: noop };
3334
},
34-
refreshPromise: refreshDeferred.promise,
35+
getRefreshPromise: () => refreshDeferred.promise,
3536
// eslint-disable-next-line @typescript-eslint/no-explicit-any
3637
} as any;
3738
});
@@ -44,7 +45,7 @@ suite('Interpreters - Display Progress', () => {
4445
when(shell.withProgress(anything(), anything())).thenResolve();
4546

4647
await statusBar.activate();
47-
refreshingCallback(undefined);
48+
refreshingCallback({ stage: ProgressReportStage.discoveryStarted });
4849

4950
const options = capture(shell.withProgress as never).last()[0] as ProgressOptions;
5051
expect(options.title).to.be.equal(`[${Interpreters.discovering}](command:${Commands.Set_Interpreter})`);
@@ -56,12 +57,12 @@ suite('Interpreters - Display Progress', () => {
5657
when(shell.withProgress(anything(), anything())).thenResolve();
5758

5859
await statusBar.activate();
59-
refreshingCallback(undefined);
60+
refreshingCallback({ stage: ProgressReportStage.discoveryStarted });
6061

6162
let options = capture(shell.withProgress as never).last()[0] as ProgressOptions;
6263
expect(options.title).to.be.equal(`[${Interpreters.discovering}](command:${Commands.Set_Interpreter})`);
6364

64-
refreshingCallback(undefined);
65+
refreshingCallback({ stage: ProgressReportStage.discoveryStarted });
6566

6667
options = capture(shell.withProgress as never).last()[0] as ProgressOptions;
6768
expect(options.title).to.be.equal(`[${Interpreters.refreshing}](command:${Commands.Set_Interpreter})`);
@@ -73,7 +74,7 @@ suite('Interpreters - Display Progress', () => {
7374
when(shell.withProgress(anything(), anything())).thenResolve();
7475

7576
await statusBar.activate();
76-
refreshingCallback(undefined);
77+
refreshingCallback({ stage: ProgressReportStage.discoveryStarted });
7778

7879
const options = capture(shell.withProgress as never).last()[0] as ProgressOptions;
7980
const callback = capture(shell.withProgress as never).last()[1] as ProgressTask<void>;

src/test/proposedApi.unit.test.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ import { IInterpreterPathService } from '../client/common/types';
99
import { IInterpreterService } from '../client/interpreter/contracts';
1010
import { IServiceContainer } from '../client/ioc/types';
1111
import { buildProposedApi } from '../client/proposedApi';
12-
import { IDiscoveryAPI, ProgressNotificationEvent } from '../client/pythonEnvironments/base/locator';
12+
import {
13+
IDiscoveryAPI,
14+
ProgressNotificationEvent,
15+
ProgressReportStage,
16+
} from '../client/pythonEnvironments/base/locator';
1317
import { PythonEnvironment } from '../client/pythonEnvironments/info';
1418
import { PythonEnvKind, PythonEnvSource } from '../client/pythonEnvironments/base/info';
1519
import { Architecture } from '../client/common/utils/platform';
@@ -389,8 +393,10 @@ suite('Proposed Extension API', () => {
389393

390394
test('getRefreshPromise: common scenario', () => {
391395
const expected = Promise.resolve();
392-
discoverAPI.setup((d) => d.getRefreshPromise()).returns(() => expected);
393-
const actual = proposed.environment.getRefreshPromise();
396+
discoverAPI
397+
.setup((d) => d.getRefreshPromise(typemoq.It.isValue({ stage: ProgressReportStage.allPathsDiscovered })))
398+
.returns(() => expected);
399+
const actual = proposed.environment.getRefreshPromise({ stage: ProgressReportStage.allPathsDiscovered });
394400

395401
// We are comparing instances here, they should be the same instance.
396402
// So '==' is ok here.

0 commit comments

Comments
 (0)