Skip to content

Add comprehensive tests for populateTestTree function #25273

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 11, 2025

Conversation

Copilot
Copy link

@Copilot Copilot AI commented Jul 10, 2025

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.


💡 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 in the docs.

@Copilot Copilot AI changed the title [WIP] add tests for populateTestTree Add comprehensive tests for populateTestTree function Jul 10, 2025
@Copilot Copilot AI requested a review from eleanorjboyd July 10, 2025 18:06
Copilot finished work on behalf of eleanorjboyd July 10, 2025 18:06
@eleanorjboyd eleanorjboyd added the debt Covers everything internal: CI, testing, refactoring of the codebase, etc. label Jul 11, 2025
@eleanorjboyd eleanorjboyd marked this pull request as ready for review July 11, 2025 17:36
@vs-code-engineering vs-code-engineering bot added this to the July 2025 milestone Jul 11, 2025
@eleanorjboyd eleanorjboyd merged commit c9c8b68 into main Jul 11, 2025
86 of 87 checks passed
@eleanorjboyd eleanorjboyd deleted the copilot/fix-25272 branch July 11, 2025 21:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
debt Covers everything internal: CI, testing, refactoring of the codebase, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

add tests for populateTestTree
4 participants