From e251144d4bbe18add17fc308f4bf046b280c3c22 Mon Sep 17 00:00:00 2001 From: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> Date: Thu, 5 Feb 2026 21:41:17 -0800 Subject: [PATCH] Add checks for enabled test frameworks before project-based discovery --- .../testing/testController/controller.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/client/testing/testController/controller.ts b/src/client/testing/testController/controller.ts index 1fc4e406a9e7..036658e2af9e 100644 --- a/src/client/testing/testController/controller.ts +++ b/src/client/testing/testController/controller.ts @@ -499,7 +499,14 @@ export class PythonTestController implements ITestController, IExtensionSingleAc // Ensure we send test telemetry if it gets disabled again this.sendTestDisabledTelemetry = true; - // Use project-based discovery if applicable + // Check if any test framework is enabled BEFORE project-based discovery + // This ensures the config screen stays visible when testing is disabled + if (!settings.testing.pytestEnabled && !settings.testing.unittestEnabled) { + await this.handleNoTestProviderEnabled(workspace); + return; + } + + // Use project-based discovery if applicable (only reached if testing is enabled) if (this.projectRegistry.hasProjects(workspace.uri)) { await this.discoverAllProjectsInWorkspace(workspace.uri); return; @@ -510,8 +517,6 @@ export class PythonTestController implements ITestController, IExtensionSingleAc await this.discoverWorkspaceTestsLegacy(workspace.uri, 'pytest'); } else if (settings.testing.unittestEnabled) { await this.discoverWorkspaceTestsLegacy(workspace.uri, 'unittest'); - } else { - await this.handleNoTestProviderEnabled(workspace); } } @@ -521,6 +526,13 @@ export class PythonTestController implements ITestController, IExtensionSingleAc * This ensures the test tree stays in sync with project changes. */ private async discoverAllProjectsInWorkspace(workspaceUri: Uri): Promise { + // Defensive check: ensure testing is enabled (should be checked by caller, but be safe) + const settings = this.configSettings.getSettings(workspaceUri); + if (!settings.testing.pytestEnabled && !settings.testing.unittestEnabled) { + traceVerbose('[test-by-project] Skipping discovery - no test framework enabled'); + return; + } + // Get existing projects before re-discovery for cleanup const existingProjects = this.projectRegistry.getProjectsArray(workspaceUri);