Implement project-based testing architecture for multi-project workspaces #25719
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds infrastructure to support multiple Python projects (each with distinct Python executables and test configurations) within a single VS Code workspace. Currently behind a feature flag (
useProjectBasedTesting = false) for safe deployment.Core Infrastructure
{projectId}::{testPath}prevents ID collisions between projectsResult Resolver Updates
projectIdparameter toPythonResultResolverconstructorpopulateTestTree()andTestDiscoveryHandlerto propagate project scopingProject Discovery Integration
discoverWorkspaceProjects(): Queries Python Environment API for projects, filters to workspace, createsProjectAdapterinstancescreateProjectAdapter(): Resolves Python environment, creates project-scoped resolver and provider-specific adapterscreateDefaultProject(): Fallback that mimics single-workspace behavior using workspace interpreterworkspaceProjects: Project registry by workspace URIvsIdToProject: O(1) test-to-project lookup for executionfileUriToProject: File-to-project mapping for file watchingprojectToVsIds: Project-to-tests mapping for cleanupActivation Flow
Graceful degradation: Any failure in project discovery automatically falls back to legacy single-workspace mode. All new code paths are disabled by default until Phases 3-4 (discovery with overlap resolution, test execution) are implemented.
Files Changed
New:
testController/common/projectAdapter.ts- Type definitionstestController/common/projectUtils.ts- UtilitiesModified:
testController/controller.ts- Project discovery and state managementtestController/common/resultResolver.ts- Project scoping supporttestController/common/testDiscoveryHandler.ts- Scoped error nodestestController/common/utils.ts- Scoped test ID creation