Fix test explorer tree state reset on test execution #4674
+67
−7
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.
This changes visible behavior
Test Explorer now preserves expand/collapse state when running tests with
cmake.ctest.testSuiteDelimiterenabled.The following changes are proposed:
testExplorerRoot.children.replace([])with selective updates. VS Code tracks UI state by object identity, not ID.children.get(id)before creating new TestItems in bothcreateTestItemAndSuiteTree()andrefreshTestsInTestExplorer()Other Notes/Information
Limitation: Nested tests removed from suites remain until parent suite removal. Full recursive cleanup deferred for complexity.
Security: CodeQL scan clean (0 alerts)
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
2wrvsblobprodwus2180.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)40vvsblobprodwus2135.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)b15vsblobprodwus2164.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)b53vsblobprodwus2154.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)d94vsblobprodwus2119.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)k4pvsblobprodwus2140.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)n6wvsblobprodwus2123.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)p2tvsblobprodwus2189.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)v41vsblobprodwus2175.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
This section details on the original issue you should resolve
<issue_title>[Bug] Test explorer tree expand / collapse are reset when running test</issue_title>
<issue_description>### Brief Issue Summary
I'm using the
cmake.ctest.testSuiteDelimitersetting to view my gtests in the test explorer as a tree. When I run any of the tests, after expanding one of the tree elements, it will revert to the closed state. I am able to keep the tree open if I reload the window with the tree expanded, but then when I run a test after collapsing the tree it reverts to being expanded. It's almost like the tree has an initial state of what is expanded and running a test reverts to that state.CMake Tools Diagnostics
{ "os": "linux", "vscodeVersion": "1.106.2", "cmtVersion": "1.21.36", "configurations": [ { "folder": "/home/thomas/projects/git/wavefront", "cmakeVersion": "3.31.6", "configured": true, "generator": "Ninja", "usesPresets": false, "compilers": { "C": "/usr/bin/gcc", "CXX": "/usr/bin/g++" } } ], "cpptoolsIntegration": { "isReady": false, "hasCodeModel": false, "activeBuildType": "", "buildTypesSeen": [], "requests": [], "responses": [], "partialMatches": [], "targetCount": 0, "executablesCount": 0, "librariesCount": 0, "targets": [] }, "settings": [ { "communicationMode": "automatic", "useCMakePresets": "auto", "configureOnOpen": true } ] }Debug Log