Commit c9c8b68
Add comprehensive tests for populateTestTree function (#25273)
This PR adds comprehensive unit tests for the `populateTestTree`
function in the VSCode Python extension's test controller, addressing
the need for better test coverage of this critical function.
## Changes Made
Added 10 comprehensive test cases to
`src/test/testing/testController/utils.unit.test.ts` covering:
### Core Functionality
- **Root creation**: Tests that a new root `TestItem` is created when
`testRoot` is undefined, with correct properties (id, name, path, tags,
canResolveChildren)
- **Recursive tree population**: Validates that all children in
`testTreeData` are processed recursively with proper hierarchy
- **Test item creation**: Ensures leaf nodes are created as `TestItem`
objects with correct properties
- **Node creation**: Tests non-leaf node creation and reuse of existing
nodes
### Edge Cases & Error Handling
- **Line number handling**: Tests correct `Range` creation for both zero
and non-zero line numbers
- **Cancellation support**: Verifies that processing stops when
cancellation token is triggered
- **Empty children**: Ensures graceful handling of nodes with no
children
- **Existing node reuse**: Tests that existing nodes are reused instead
of creating duplicates
### Data Integrity
- **Mapping updates**: Validates that `resultResolver` mappings
(`runIdToTestItem`, `runIdToVSid`, `vsIdToRunId`) are updated correctly
- **Tag assignment**: Confirms all created items have proper
`RunTestTag` and `DebugTestTag` tags
## Test Implementation Details
The tests follow existing patterns in the codebase:
- Uses **Mocha** test framework with `suite`/`test` TDD structure
- Leverages **sinon** for stubbing and mocking VSCode APIs
- Uses **assert** for validation
- Properly mocks `TestController`, `TestItem`, and `ITestResultResolver`
interfaces
- Includes setup/teardown for clean test isolation
All tests are passing and provide comprehensive coverage of the
`populateTestTree` function's behavior, ensuring robustness and
maintainability of this critical testing infrastructure component.
Fixes #25272.
<!-- START COPILOT CODING AGENT TIPS -->
---
💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.
---------
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: eleanorjboyd <[email protected]>1 parent efc5101 commit c9c8b68
File tree
2 files changed
+664
-2
lines changed- src
- client/testing/testController/common
- test/testing/testController
2 files changed
+664
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
195 | | - | |
| 195 | + | |
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
| |||
0 commit comments