Skip to content

Commit f45362c

Browse files
committed
Revert "Consistent disposal of receivers across adapters (microsoft#21759)"
This reverts commit b299ec9.
1 parent 9a60b2e commit f45362c

File tree

4 files changed

+23
-37
lines changed

4 files changed

+23
-37
lines changed

src/client/testing/testController/pytest/pytestDiscoveryAdapter.ts

+7-9
Original file line numberDiff line numberDiff line change
@@ -33,30 +33,27 @@ export class PytestTestDiscoveryAdapter implements ITestDiscoveryAdapter {
3333

3434
async discoverTests(uri: Uri, executionFactory?: IPythonExecutionFactory): Promise<DiscoveredTestPayload> {
3535
const settings = this.configSettings.getSettings(uri);
36-
const uuid = this.testServer.createUUID(uri.fsPath);
3736
const { pytestArgs } = settings.testing;
3837
traceVerbose(pytestArgs);
39-
const dataReceivedDisposable = this.testServer.onDiscoveryDataReceived((e: DataReceivedEvent) => {
38+
const disposable = this.testServer.onDiscoveryDataReceived((e: DataReceivedEvent) => {
39+
// cancelation token ?
4040
this.resultResolver?.resolveDiscovery(JSON.parse(e.data));
4141
});
42-
const disposeDataReceiver = function (testServer: ITestServer) {
43-
testServer.deleteUUID(uuid);
44-
dataReceivedDisposable.dispose();
45-
};
4642
try {
47-
await this.runPytestDiscovery(uri, uuid, executionFactory);
43+
await this.runPytestDiscovery(uri, executionFactory);
4844
} finally {
49-
disposeDataReceiver(this.testServer);
45+
disposable.dispose();
5046
}
5147
// this is only a placeholder to handle function overloading until rewrite is finished
5248
const discoveryPayload: DiscoveredTestPayload = { cwd: uri.fsPath, status: 'success' };
5349
return discoveryPayload;
5450
}
5551

56-
async runPytestDiscovery(uri: Uri, uuid: string, executionFactory?: IPythonExecutionFactory): Promise<void> {
52+
async runPytestDiscovery(uri: Uri, executionFactory?: IPythonExecutionFactory): Promise<void> {
5753
const deferred = createDeferred<DiscoveredTestPayload>();
5854
const relativePathToPytest = 'pythonFiles';
5955
const fullPluginPath = path.join(EXTENSION_ROOT_DIR, relativePathToPytest);
56+
const uuid = this.testServer.createUUID(uri.fsPath);
6057
const settings = this.configSettings.getSettings(uri);
6158
const { pytestArgs } = settings.testing;
6259
const cwd = settings.testing.cwd && settings.testing.cwd.length > 0 ? settings.testing.cwd : uri.fsPath;
@@ -96,6 +93,7 @@ export class PytestTestDiscoveryAdapter implements ITestDiscoveryAdapter {
9693
});
9794
result?.proc?.on('exit', () => {
9895
deferredExec.resolve({ stdout: '', stderr: '' });
96+
this.testServer.deleteUUID(uuid);
9997
deferred.resolve();
10098
});
10199

src/client/testing/testController/pytest/pytestExecutionAdapter.ts

+6-16
Original file line numberDiff line numberDiff line change
@@ -43,28 +43,19 @@ export class PytestTestExecutionAdapter implements ITestExecutionAdapter {
4343
): Promise<ExecutionTestPayload> {
4444
const uuid = this.testServer.createUUID(uri.fsPath);
4545
traceVerbose(uri, testIds, debugBool);
46-
const dataReceivedDisposable = this.testServer.onRunDataReceived((e: DataReceivedEvent) => {
46+
const disposedDataReceived = this.testServer.onRunDataReceived((e: DataReceivedEvent) => {
4747
if (runInstance) {
4848
this.resultResolver?.resolveExecution(JSON.parse(e.data), runInstance);
4949
}
5050
});
51-
const disposeDataReceiver = function (testServer: ITestServer) {
51+
const dispose = function (testServer: ITestServer) {
5252
testServer.deleteUUID(uuid);
53-
dataReceivedDisposable.dispose();
53+
disposedDataReceived.dispose();
5454
};
5555
runInstance?.token.onCancellationRequested(() => {
56-
disposeDataReceiver(this.testServer);
56+
dispose(this.testServer);
5757
});
58-
await this.runTestsNew(
59-
uri,
60-
testIds,
61-
uuid,
62-
runInstance,
63-
debugBool,
64-
executionFactory,
65-
debugLauncher,
66-
disposeDataReceiver,
67-
);
58+
await this.runTestsNew(uri, testIds, uuid, runInstance, debugBool, executionFactory, debugLauncher);
6859

6960
// placeholder until after the rewrite is adopted
7061
// TODO: remove after adoption.
@@ -84,7 +75,6 @@ export class PytestTestExecutionAdapter implements ITestExecutionAdapter {
8475
debugBool?: boolean,
8576
executionFactory?: IPythonExecutionFactory,
8677
debugLauncher?: ITestDebugLauncher,
87-
disposeDataReceiver?: (testServer: ITestServer) => void,
8878
): Promise<ExecutionTestPayload> {
8979
const deferred = createDeferred<ExecutionTestPayload>();
9080
const relativePathToPytest = 'pythonFiles';
@@ -177,8 +167,8 @@ export class PytestTestExecutionAdapter implements ITestExecutionAdapter {
177167

178168
result?.proc?.on('exit', () => {
179169
deferredExec.resolve({ stdout: '', stderr: '' });
170+
this.testServer.deleteUUID(uuid);
180171
deferred.resolve();
181-
disposeDataReceiver?.(this.testServer);
182172
});
183173
await deferredExec.promise;
184174
}

src/client/testing/testController/unittest/testDiscoveryAdapter.ts

+3-6
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,13 @@ export class UnittestTestDiscoveryAdapter implements ITestDiscoveryAdapter {
4343
outChannel: this.outputChannel,
4444
};
4545

46-
const dataReceivedDisposable = this.testServer.onDiscoveryDataReceived((e: DataReceivedEvent) => {
46+
const disposable = this.testServer.onDiscoveryDataReceived((e: DataReceivedEvent) => {
4747
this.resultResolver?.resolveDiscovery(JSON.parse(e.data));
4848
});
49-
const disposeDataReceiver = function (testServer: ITestServer) {
50-
testServer.deleteUUID(uuid);
51-
dataReceivedDisposable.dispose();
52-
};
5349

5450
await this.callSendCommand(options, () => {
55-
disposeDataReceiver(this.testServer);
51+
this.testServer.deleteUUID(uuid);
52+
disposable.dispose();
5653
});
5754
// placeholder until after the rewrite is adopted
5855
// TODO: remove after adoption.

src/client/testing/testController/unittest/testExecutionAdapter.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ export class UnittestTestExecutionAdapter implements ITestExecutionAdapter {
4242
this.resultResolver?.resolveExecution(JSON.parse(e.data), runInstance);
4343
}
4444
});
45-
const disposeDataReceiver = function (testServer: ITestServer) {
46-
testServer.deleteUUID(uuid);
45+
const dispose = function () {
4746
disposedDataReceived.dispose();
4847
};
4948
runInstance?.token.onCancellationRequested(() => {
50-
disposeDataReceiver(this.testServer);
49+
this.testServer.deleteUUID(uuid);
50+
dispose();
5151
});
52-
await this.runTestsNew(uri, testIds, uuid, runInstance, debugBool, disposeDataReceiver);
52+
await this.runTestsNew(uri, testIds, uuid, runInstance, debugBool, dispose);
5353
const executionPayload: ExecutionTestPayload = { cwd: uri.fsPath, status: 'success', error: '' };
5454
return executionPayload;
5555
}
@@ -60,7 +60,7 @@ export class UnittestTestExecutionAdapter implements ITestExecutionAdapter {
6060
uuid: string,
6161
runInstance?: TestRun,
6262
debugBool?: boolean,
63-
disposeDataReceiver?: (testServer: ITestServer) => void,
63+
dispose?: () => void,
6464
): Promise<ExecutionTestPayload> {
6565
const settings = this.configSettings.getSettings(uri);
6666
const { unittestArgs } = settings.testing;
@@ -84,8 +84,9 @@ export class UnittestTestExecutionAdapter implements ITestExecutionAdapter {
8484
const runTestIdsPort = await startTestIdServer(testIds);
8585

8686
await this.testServer.sendCommand(options, runTestIdsPort.toString(), runInstance, () => {
87+
this.testServer.deleteUUID(uuid);
8788
deferred.resolve();
88-
disposeDataReceiver?.(this.testServer);
89+
dispose?.();
8990
});
9091
// placeholder until after the rewrite is adopted
9192
// TODO: remove after adoption.

0 commit comments

Comments
 (0)