Add default pattern for GoogleTest failure hyperlinking in Test Results #4663
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
GoogleTest failure output in Test Results panel now shows clickable file paths. Previously, only compiler error formats (
file:line: error:) were hyperlinked; GoogleTest'sfile:line: Failureformat was rendered as plain text.The following changes are proposed:
(.*?):(\\d+): *(.*)to defaultcmake.ctest.failurePatternsin package.jsonImplementation
The existing
searchOutputForFailures()function already parses patterns and createsvscode.TestMessageobjects withlocationproperties for hyperlinking. The new pattern captures GoogleTest's output format:Extracts: file path, line 135 (→134 in 0-based VSCode Position), message "Failure".
The pattern is intentionally general (
file:line: anything) to support GoogleTest and similar frameworks. May create duplicate matches for error lines that match multiple patterns, but this doesn't affect functionality.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:
0psvsblobprodwus2145.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/npm install(dns block)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)/usr/local/bin/node node /usr/local/bin/npm 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)ezcvsblobprodwus2170.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/npm 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 Results panel doesn't hyperlink file paths</issue_title>
<issue_description>### Brief Issue Summary
When running GoogleTest-based tests using CTest via Test Explorer, the Test Results panel shows the results of each test. However, the file paths in the test results are not hyperlinked, so I cannot navigate to failure points logged by the tests.
CMake Tools Diagnostics
{ "os": "win32", "vscodeVersion": "1.104.3", "cmtVersion": "1.22.14", "configurations": [ { "folder": "d:\\dev\\Synaptive\\ModusV\\embeddedfirmware", "cmakeVersion": "3.31.5", "configured": true, "generator": "Ninja Multi-Config", "usesPresets": true, "compilers": { "C": "C:/Tools/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc.exe", "CXX": "C:/Tools/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-g++.exe" } }, { "folder": "d:\\dev\\Synaptive\\ModusV\\embeddedfirmware", "cmakeVersion": "3.31.5", "configured": true, "generator": "Ninja", "usesPresets": false, "compilers": { "C": "C:/msys64/mingw32/bin/gcc.exe", "CXX": "C:/msys64/mingw32/bin/g++.exe" } } ], "cpptoolsIntegration": { "isReady": true, "hasCodeModel": true, "activeBuildType": "Debug", "buildTypesSeen": [ "Debug" ], "requests": [ "file:///d%3A/dev/Synaptive/ModusV/embeddedfirmware/test/projects/pwrcon/src/TestLedMgr.cpp", "file:///d%3A/dev/Synaptive/ModusV/embeddedfirmware/projects/pwrcon/src/hw/led_mgr.c" ], "responses": [ { "uri": "file:///d%3A/dev/Synaptive/ModusV/embeddedfirmware/test/projects/pwrcon/src/TestLedMgr.cpp", "configuration": { "includePath": [ "d:/dev/synaptive/modusv/embeddedfirmware/test/projects/pwrcon/inc/config", "d:/dev/synaptive/modusv/embeddedfirmware/projects/pwrcon/inc", "d:/dev/synaptive/modusv/embeddedfirmware/projects/pwrcon/inc/config", "d:/dev/synaptive/modusv/embeddedfirmware/projects/core/inc", "d:/dev/synaptive/modusv/embeddedfirmware/projects/core/inc/config", "d:/dev/synaptive/modusv/embeddedfirmware/dependencies/jsmn", "d:/dev/synaptive/modusv/embeddedfirmware/test/mock", "d:/dev/synaptive/modusv/embeddedfirmware/test", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googlemock/include", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googlemock", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googletest/include", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googletest" ], "defines": [ "APPLICATION_NAME=\"UNIT-TEST\"", "BUILD_AUTHOR=\"TEST-AUTHOR\"", "BUILD_COMMIT=\"0xdeadbeef\"", "BUILD_DIRTY=0", "FIRMWARE_PARTNUM=\"UNIT-TEST\"", "JSON_ENABLED=1", "PWRCON", "_FILE_OFFSET_BITS=64", "_POSIX_C_SOURCE", "__UNIT_TEST__" ], "compilerPath": "c:/msys64/mingw32/bin/g++.exe", "compilerArgs": [], "compilerFragments": [ "-g", "-m32", "-Wall", "-Werror", "-Wno-unused-function" ] } }, { "uri": "file:///d%3A/dev/Synaptive/ModusV/embeddedfirmware/projects/pwrcon/src/hw/led_mgr.c", "configuration": { "includePath": [ "d:/dev/synaptive/modusv/embeddedfirmware/test/projects/pwrcon/inc/config", "d:/dev/synaptive/modusv/embeddedfirmware/projects/pwrcon/inc", "d:/dev/synaptive/modusv/embeddedfirmware/projects/pwrcon/inc/config", "d:/dev/synaptive/modusv/embeddedfirmware/projects/core/inc", "d:/dev/synaptive/modusv/embeddedfirmware/projects/core/inc/config", "d:/dev/synaptive/modusv/embeddedfirmware/dependencies/jsmn", "d:/dev/synaptive/modusv/embeddedfirmware/test/mock", "d:/dev/synaptive/modusv/embeddedfirmware/test", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googlemock/include", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googlemock", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googletest/include", "d:/dev/synaptive/modusv/embeddedfirmware/test/build/_deps/googletest-src/googletest" ], "defines": [ "APPLICATION_NAME=\"UNIT-TEST\"", "BUILD_AUTHOR=\"TEST-AUTHOR\"", ... </details> <!-- START COPILOT CODING AGENT SUFFIX --> - Fixes microsoft/vscode-cmake-tools#4589 <!-- START COPILOT CODING AGENT TIPS --> --- ✨ Let Copilot coding agent [set things up for you](https://github.com/microsoft/vscode-cmake-tools/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot) — coding agent works faster and does higher quality work when set up for your repo.