diff --git a/src/client/testing/common/debugLauncher.ts b/src/client/testing/common/debugLauncher.ts index f7a027ad1304..dcf23c0478db 100644 --- a/src/client/testing/common/debugLauncher.ts +++ b/src/client/testing/common/debugLauncher.ts @@ -146,7 +146,7 @@ export class DebugLauncher implements ITestDebugLauncher { cfg.console = 'internalConsole'; } if (!cfg.cwd) { - cfg.cwd = workspaceFolder.uri.fsPath; + cfg.cwd = configSettings.testing.cwd || workspaceFolder.uri.fsPath; } if (!cfg.env) { cfg.env = {}; diff --git a/src/client/testing/testController/unittest/testExecutionAdapter.ts b/src/client/testing/testController/unittest/testExecutionAdapter.ts index bf83c3c0feb1..b671a64138cb 100644 --- a/src/client/testing/testController/unittest/testExecutionAdapter.ts +++ b/src/client/testing/testController/unittest/testExecutionAdapter.ts @@ -44,10 +44,10 @@ export class UnittestTestExecutionAdapter implements ITestExecutionAdapter { public async runTests(uri: Uri, testIds: string[], debugBool?: boolean): Promise { const settings = this.configSettings.getSettings(uri); - const { unittestArgs } = settings.testing; + const { cwd, unittestArgs } = settings.testing; const command = buildExecutionCommand(unittestArgs); - this.cwd = uri.fsPath; + this.cwd = cwd || uri.fsPath; const uuid = this.testServer.createUUID(uri.fsPath); const options: TestCommandOptions = { diff --git a/src/test/testing/common/debugLauncher.unit.test.ts b/src/test/testing/common/debugLauncher.unit.test.ts index 41b95c66040e..4712c9b6136a 100644 --- a/src/test/testing/common/debugLauncher.unit.test.ts +++ b/src/test/testing/common/debugLauncher.unit.test.ts @@ -77,7 +77,7 @@ suite('Unit Tests - Debug Launcher', () => { settings = TypeMoq.Mock.ofType(undefined, TypeMoq.MockBehavior.Strict); configService.setup((c) => c.getSettings(TypeMoq.It.isAny())).returns(() => settings.object); - unitTestSettings = TypeMoq.Mock.ofType(undefined, TypeMoq.MockBehavior.Strict); + unitTestSettings = TypeMoq.Mock.ofType(); settings.setup((p) => p.testing).returns(() => unitTestSettings.object); debugEnvHelper = TypeMoq.Mock.ofType(undefined, TypeMoq.MockBehavior.Strict); @@ -333,6 +333,21 @@ suite('Unit Tests - Debug Launcher', () => { debugService.verifyAll(); }); + test('Use cwd value in settings if exist', async () => { + unitTestSettings.setup((p) => p.cwd).returns(() => 'path/to/settings/cwd'); + const options: LaunchOptions = { + cwd: 'one/two/three', + args: ['/one/two/three/testfile.py'], + testProvider: 'unittest', + }; + const expected = getDefaultDebugConfig(); + expected.cwd = 'path/to/settings/cwd'; + setupSuccess(options, 'unittest', expected); + await debugLauncher.launchDebugger(options); + + debugService.verifyAll(); + }); + test('Full debug config', async () => { const options: LaunchOptions = { cwd: 'one/two/three',