adopt ensureNoDisposablesAreLeakedInTestSuite (#192613)

* #190503 adopt ensureNoDisposablesAreLeakedInTestSuite

* handle disposing in async teardown

---------

Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com>
This commit is contained in:
Sandeep Somavarapu
2023-09-12 10:14:45 +02:00
committed by GitHub
parent 77b4d4d780
commit bbbd8da393
2 changed files with 12 additions and 4 deletions
@@ -361,7 +361,7 @@ export class ExtensionRecommendationNotificationService extends Disposable imple
this.visibleNotification = { recommendationsNotification, source, from: Date.now() };
recommendationsNotification.show();
}
await raceCancellation(Event.toPromise(recommendationsNotification.onDidClose), token);
await raceCancellation(new Promise(c => disposables.add(Event.once(recommendationsNotification.onDidClose)(c))), token);
return !recommendationsNotification.isCancelled();
} finally {
disposables.dispose();
@@ -61,7 +61,9 @@ import { VSBuffer } from 'vs/base/common/buffer';
import { platform } from 'vs/base/common/platform';
import { arch } from 'vs/base/common/process';
import { runWithFakedTimers } from 'vs/base/test/common/timeTravelScheduler';
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
import { DisposableStore } from 'vs/base/common/lifecycle';
import { timeout } from 'vs/base/common/async';
const mockExtensionGallery: IGalleryExtension[] = [
aGalleryExtension('MockExtension1', {
@@ -181,7 +183,7 @@ function aGalleryExtension(name: string, properties: any = {}, galleryExtensionP
}
suite('ExtensionRecommendationsService Test', () => {
const disposableStore = new DisposableStore();
let disposableStore: DisposableStore;
let workspaceService: IWorkspaceContextService;
let instantiationService: TestInstantiationService;
let testConfigurationService: TestConfigurationService;
@@ -194,7 +196,15 @@ suite('ExtensionRecommendationsService Test', () => {
let promptedEmitter: Emitter<void>;
let onModelAddedEvent: Emitter<ITextModel>;
teardown(async () => {
disposableStore.dispose();
await timeout(0); // allow for async disposables to complete
});
ensureNoDisposablesAreLeakedInTestSuite();
setup(() => {
disposableStore = new DisposableStore();
instantiationService = disposableStore.add(new TestInstantiationService());
promptedEmitter = disposableStore.add(new Emitter<void>());
installEvent = disposableStore.add(new Emitter<InstallExtensionEvent>());
@@ -308,8 +318,6 @@ suite('ExtensionRecommendationsService Test', () => {
});
});
teardown(() => disposableStore.clear());
function setUpFolderWorkspace(folderName: string, recommendedExtensions: string[], ignoredRecommendations: string[] = []): Promise<void> {
return setUpFolder(folderName, recommendedExtensions, ignoredRecommendations);
}