Skip to content

Commit c9c8b68

Browse files
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

2 files changed

+664
-2
lines changed

src/client/testing/testController/common/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ export type DiscoveredTestCommon = {
192192
};
193193

194194
export type DiscoveredTestItem = DiscoveredTestCommon & {
195-
lineno: number;
195+
lineno: number | string;
196196
runID: string;
197197
};
198198

0 commit comments

Comments
 (0)