From 3ca1e2e4af8a9862c610e012ee4e6c7ee648b157 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Fri, 7 Apr 2023 14:22:22 -0700 Subject: [PATCH 1/2] add pytest execution tests --- .../pytestExecutionAdapter.unit.test.ts | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts diff --git a/src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts b/src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts new file mode 100644 index 000000000000..f62f2db87894 --- /dev/null +++ b/src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts @@ -0,0 +1,90 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +import * as assert from 'assert'; +import { Uri } from 'vscode'; +import * as typeMoq from 'typemoq'; +import { IConfigurationService } from '../../../../client/common/types'; +import { DataReceivedEvent, ITestServer } from '../../../../client/testing/testController/common/types'; +import { IPythonExecutionFactory, IPythonExecutionService } from '../../../../client/common/process/types'; +import { createDeferred, Deferred } from '../../../../client/common/utils/async'; +import { PytestTestExecutionAdapter } from '../../../../client/testing/testController/pytest/pytestExecutionAdapter'; + +suite('pytest test execution adapter', () => { + let testServer: typeMoq.IMock; + let configService: IConfigurationService; + let execFactory = typeMoq.Mock.ofType(); + let adapter: PytestTestExecutionAdapter; + let execService: typeMoq.IMock; + let deferred: Deferred; + setup(() => { + testServer = typeMoq.Mock.ofType(); + testServer.setup((t) => t.getPort()).returns(() => 12345); + testServer + .setup((t) => t.onDataReceived(typeMoq.It.isAny(), typeMoq.It.isAny())) + .returns(() => ({ + dispose: () => { + /* no-body */ + }, + })); + configService = ({ + getSettings: () => ({ + testing: { pytestArgs: ['.'] }, + }), + isTestExecution: () => false, + } as unknown) as IConfigurationService; + execFactory = typeMoq.Mock.ofType(); + execService = typeMoq.Mock.ofType(); + execFactory + .setup((x) => x.createActivatedEnvironment(typeMoq.It.isAny())) + .returns(() => Promise.resolve(execService.object)); + deferred = createDeferred(); + execService + .setup((x) => x.exec(typeMoq.It.isAny(), typeMoq.It.isAny())) + .returns(() => { + deferred.resolve(); + return Promise.resolve({ stdout: '{}' }); + }); + execFactory.setup((p) => ((p as unknown) as any).then).returns(() => undefined); + execService.setup((p) => ((p as unknown) as any).then).returns(() => undefined); + }); + test('onDataReceivedHandler should parse only if known UUID', async () => { + const uri = Uri.file('/my/test/path/'); + const uuid = 'uuid123'; + const data = { status: 'success' }; + testServer.setup((t) => t.createUUID(typeMoq.It.isAny())).returns(() => uuid); + const eventData: DataReceivedEvent = { + uuid, + data: JSON.stringify(data), + }; + + adapter = new PytestTestExecutionAdapter(testServer.object, configService); + const promise = adapter.runTests(uri, [], false); + // await deferred.promise; + adapter.onDataReceivedHandler(eventData); + const result = await promise; + assert.deepStrictEqual(result, data); + }); + test('onDataReceivedHandler should not parse if it is unknown UUID', async () => { + const uri = Uri.file('/my/test/path/'); + const uuid = 'uuid456'; + let data = { status: 'error' }; + testServer.setup((t) => t.createUUID(typeMoq.It.isAny())).returns(() => uuid); + const wrongUriEventData: DataReceivedEvent = { + uuid: 'incorrect-uuid456', + data: JSON.stringify(data), + }; + adapter = new PytestTestExecutionAdapter(testServer.object, configService); + const promise = adapter.runTests(uri, [], false); + adapter.onDataReceivedHandler(wrongUriEventData); + + data = { status: 'success' }; + const correctUriEventData: DataReceivedEvent = { + uuid, + data: JSON.stringify(data), + }; + adapter.onDataReceivedHandler(correctUriEventData); + const result = await promise; + assert.deepStrictEqual(result, data); + }); +}); From 0dfb6216198798102fd26137edae659af84c0ca2 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Mon, 10 Apr 2023 08:40:15 -0700 Subject: [PATCH 2/2] comment out due to new run code being inactive --- .../pytestExecutionAdapter.unit.test.ts | 174 +++++++++--------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts b/src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts index f62f2db87894..ac6c6bd274a4 100644 --- a/src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts +++ b/src/test/testing/testController/pytest/pytestExecutionAdapter.unit.test.ts @@ -1,90 +1,90 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -import * as assert from 'assert'; -import { Uri } from 'vscode'; -import * as typeMoq from 'typemoq'; -import { IConfigurationService } from '../../../../client/common/types'; -import { DataReceivedEvent, ITestServer } from '../../../../client/testing/testController/common/types'; -import { IPythonExecutionFactory, IPythonExecutionService } from '../../../../client/common/process/types'; -import { createDeferred, Deferred } from '../../../../client/common/utils/async'; -import { PytestTestExecutionAdapter } from '../../../../client/testing/testController/pytest/pytestExecutionAdapter'; +// /* eslint-disable @typescript-eslint/no-explicit-any */ +// // Copyright (c) Microsoft Corporation. All rights reserved. +// // Licensed under the MIT License. +// import * as assert from 'assert'; +// import { Uri } from 'vscode'; +// import * as typeMoq from 'typemoq'; +// import { IConfigurationService } from '../../../../client/common/types'; +// import { DataReceivedEvent, ITestServer } from '../../../../client/testing/testController/common/types'; +// import { IPythonExecutionFactory, IPythonExecutionService } from '../../../../client/common/process/types'; +// import { createDeferred, Deferred } from '../../../../client/common/utils/async'; +// import { PytestTestExecutionAdapter } from '../../../../client/testing/testController/pytest/pytestExecutionAdapter'; -suite('pytest test execution adapter', () => { - let testServer: typeMoq.IMock; - let configService: IConfigurationService; - let execFactory = typeMoq.Mock.ofType(); - let adapter: PytestTestExecutionAdapter; - let execService: typeMoq.IMock; - let deferred: Deferred; - setup(() => { - testServer = typeMoq.Mock.ofType(); - testServer.setup((t) => t.getPort()).returns(() => 12345); - testServer - .setup((t) => t.onDataReceived(typeMoq.It.isAny(), typeMoq.It.isAny())) - .returns(() => ({ - dispose: () => { - /* no-body */ - }, - })); - configService = ({ - getSettings: () => ({ - testing: { pytestArgs: ['.'] }, - }), - isTestExecution: () => false, - } as unknown) as IConfigurationService; - execFactory = typeMoq.Mock.ofType(); - execService = typeMoq.Mock.ofType(); - execFactory - .setup((x) => x.createActivatedEnvironment(typeMoq.It.isAny())) - .returns(() => Promise.resolve(execService.object)); - deferred = createDeferred(); - execService - .setup((x) => x.exec(typeMoq.It.isAny(), typeMoq.It.isAny())) - .returns(() => { - deferred.resolve(); - return Promise.resolve({ stdout: '{}' }); - }); - execFactory.setup((p) => ((p as unknown) as any).then).returns(() => undefined); - execService.setup((p) => ((p as unknown) as any).then).returns(() => undefined); - }); - test('onDataReceivedHandler should parse only if known UUID', async () => { - const uri = Uri.file('/my/test/path/'); - const uuid = 'uuid123'; - const data = { status: 'success' }; - testServer.setup((t) => t.createUUID(typeMoq.It.isAny())).returns(() => uuid); - const eventData: DataReceivedEvent = { - uuid, - data: JSON.stringify(data), - }; +// suite('pytest test execution adapter', () => { +// let testServer: typeMoq.IMock; +// let configService: IConfigurationService; +// let execFactory = typeMoq.Mock.ofType(); +// let adapter: PytestTestExecutionAdapter; +// let execService: typeMoq.IMock; +// let deferred: Deferred; +// setup(() => { +// testServer = typeMoq.Mock.ofType(); +// testServer.setup((t) => t.getPort()).returns(() => 12345); +// testServer +// .setup((t) => t.onDataReceived(typeMoq.It.isAny(), typeMoq.It.isAny())) +// .returns(() => ({ +// dispose: () => { +// /* no-body */ +// }, +// })); +// configService = ({ +// getSettings: () => ({ +// testing: { pytestArgs: ['.'] }, +// }), +// isTestExecution: () => false, +// } as unknown) as IConfigurationService; +// execFactory = typeMoq.Mock.ofType(); +// execService = typeMoq.Mock.ofType(); +// execFactory +// .setup((x) => x.createActivatedEnvironment(typeMoq.It.isAny())) +// .returns(() => Promise.resolve(execService.object)); +// deferred = createDeferred(); +// execService +// .setup((x) => x.exec(typeMoq.It.isAny(), typeMoq.It.isAny())) +// .returns(() => { +// deferred.resolve(); +// return Promise.resolve({ stdout: '{}' }); +// }); +// execFactory.setup((p) => ((p as unknown) as any).then).returns(() => undefined); +// execService.setup((p) => ((p as unknown) as any).then).returns(() => undefined); +// }); +// test('onDataReceivedHandler should parse only if known UUID', async () => { +// const uri = Uri.file('/my/test/path/'); +// const uuid = 'uuid123'; +// const data = { status: 'success' }; +// testServer.setup((t) => t.createUUID(typeMoq.It.isAny())).returns(() => uuid); +// const eventData: DataReceivedEvent = { +// uuid, +// data: JSON.stringify(data), +// }; - adapter = new PytestTestExecutionAdapter(testServer.object, configService); - const promise = adapter.runTests(uri, [], false); - // await deferred.promise; - adapter.onDataReceivedHandler(eventData); - const result = await promise; - assert.deepStrictEqual(result, data); - }); - test('onDataReceivedHandler should not parse if it is unknown UUID', async () => { - const uri = Uri.file('/my/test/path/'); - const uuid = 'uuid456'; - let data = { status: 'error' }; - testServer.setup((t) => t.createUUID(typeMoq.It.isAny())).returns(() => uuid); - const wrongUriEventData: DataReceivedEvent = { - uuid: 'incorrect-uuid456', - data: JSON.stringify(data), - }; - adapter = new PytestTestExecutionAdapter(testServer.object, configService); - const promise = adapter.runTests(uri, [], false); - adapter.onDataReceivedHandler(wrongUriEventData); +// adapter = new PytestTestExecutionAdapter(testServer.object, configService); +// const promise = adapter.runTests(uri, [], false); +// await deferred.promise; +// adapter.onDataReceivedHandler(eventData); +// const result = await promise; +// assert.deepStrictEqual(result, data); +// }); +// test('onDataReceivedHandler should not parse if it is unknown UUID', async () => { +// const uri = Uri.file('/my/test/path/'); +// const uuid = 'uuid456'; +// let data = { status: 'error' }; +// testServer.setup((t) => t.createUUID(typeMoq.It.isAny())).returns(() => uuid); +// const wrongUriEventData: DataReceivedEvent = { +// uuid: 'incorrect-uuid456', +// data: JSON.stringify(data), +// }; +// adapter = new PytestTestExecutionAdapter(testServer.object, configService); +// const promise = adapter.runTests(uri, [], false); +// adapter.onDataReceivedHandler(wrongUriEventData); - data = { status: 'success' }; - const correctUriEventData: DataReceivedEvent = { - uuid, - data: JSON.stringify(data), - }; - adapter.onDataReceivedHandler(correctUriEventData); - const result = await promise; - assert.deepStrictEqual(result, data); - }); -}); +// data = { status: 'success' }; +// const correctUriEventData: DataReceivedEvent = { +// uuid, +// data: JSON.stringify(data), +// }; +// adapter.onDataReceivedHandler(correctUriEventData); +// const result = await promise; +// assert.deepStrictEqual(result, data); +// }); +// });