Refactor PythonResultResolver: Separate state from processing logic #31
+914
−410
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.
Refactors
PythonResultResolverto separate stateful concerns (ID mappings) from stateless processing logic (payload handling), following the design inresultHandlerRefactor.md.New Components
TestItemIndex- Per-workspace state management for ID mappings (runId ↔ TestItem,runId ↔ vsId). Provides O(1) lookups with fallback strategies and stale reference cleanup.TestDiscoveryHandler- Stateless singleton for discovery payload processing. Handles error nodes and test tree population.TestExecutionHandler- Stateless singleton for execution results. Routes outcomes (success/failure/error/skip/subtest) and returns subtest stats to caller.TestCoverageHandler- Stateless singleton for coverage payloads. CreatesFileCoverageobjects and returns detailed coverage map.Updated Component
PythonResultResolveris now a pure facade:Other Changes
SubtestStatsinterface moved totypes.tsto avoid duplicationTestItemIndexOriginal prompt
Created from VS Code via the GitHub Pull Request extension.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.