vscode-cmake-tools icon indicating copy to clipboard operation
vscode-cmake-tools copied to clipboard

[Bug] Test Results panel doesn't hyperlink file paths

Open doxxx opened this issue 2 months ago • 3 comments

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.

Image

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\"",
            "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/gcc.exe",
          "compilerArgs": [],
          "compilerFragments": [
            "-g -std=gnu2x",
            "-m32",
            "-Wall",
            "-Werror",
            "-Wno-unused-function"
          ]
        }
      }
    ],
    "partialMatches": [],
    "targetCount": 35,
    "executablesCount": 3,
    "librariesCount": 4,
    "targets": []
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": false
    },
    {
      "communicationMode": "automatic",
      "useCMakePresets": "auto",
      "configureOnOpen": false
    }
  ]
}

Debug Log

[proc] Executing command: "C:\Program Files\CMake\bin\ctest.exe" -j16 -C Debug -T test --output-on-failure -R ^LedMgrTests\.Initialization$
[proc]   with environment: {"ALLUSERSPROFILE":"C:\\ProgramData","APPDATA":"C:\\Users\\gordon.tyler\\AppData\\Roaming","APPLICATIONINSIGHTS_CONFIGURATION_CONTENT":"{}","APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL":"1","APPLICATION_INSIGHTS_NO_STATSBEAT":"true","ARM_10_TOOLCHAIN_DIR":"C:/Tools/gcc-arm-none-eabi-10.3-2021.10","ARM_11_TOOLCHAIN_DIR":"C:/Tools/arm-gnu-toolchain-11.3.rel1-mingw-w64-i686-arm-none-eabi","ARM_TOOLCHAIN_DIR":"C:/Tools/gcc-arm-none-eabi-6-2017-q1-update","CHROME_CRASHPAD_PIPE_NAME":"\\\\.\\pipe\\crashpad_35612_QBQVVCJBRRCHQFCM","COMPUTERNAME":"GTYLER-5560","ChocolateyInstall":"C:\\ProgramData\\chocolatey","ChocolateyLastPathUpdate":"133365205007206731","ComSpec":"C:\\WINDOWS\\system32\\cmd.exe","CommonProgramFiles":"C:\\Program Files\\Common Files","CommonProgramFiles(x86)":"C:\\Program Files (x86)\\Common Files","CommonProgramW6432":"C:\\Program Files\\Common Files","DRIVE_SIMULATED_CAMERA":"1","DRIVE_SIMULATED_DAC":"1","DRIVE_SIMULATED_LED":"1","DRIVE_SIMULATED_MONITORCONTROL":"1","DRIVE_SIMULATED_POWERCONTROL":"1","DRIVE_SIMULATED_TRACKER":"1","DRIVE_SIMULATED_VIDEOSCOPE":"1","DriverData":"C:\\Windows\\System32\\Drivers\\DriverData","EFC_15616_1262719628":"1","EFC_15616_1592913036":"1","EFC_15616_2283032206":"1","EFC_15616_2775293581":"1","EFC_15616_3789132940":"1","ELECTRON_RUN_AS_NODE":"1","FPS_BROWSER_APP_PROFILE_STRING":"Internet Explorer","FPS_BROWSER_USER_PROFILE_STRING":"Default","HOMEDRIVE":"C:","HOMEPATH":"\\Users\\gordon.tyler","IGCCSVC_DB":"AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAUtRFw24KhUK/MyU22YPpagQAAAACAAAAAAAQZgAAAAEAACAAAAAtj26z6XWtj8CZjqPoD8yY5DijLd+Q7iGka+fxApwGjgAAAAAOgAAAAAIAACAAAABWKIJkO5g/Q4gX7ZvXYmGqUfCSDgM+0W8yFg1F+eS9KGAAAACQGs2udEGfNaaldafn/Fv9YlMUQzSg4EzRkScPROJkS3NnIJGhxpbqAf9Uyrkvf5rENCJi20sQ0309McnkhKcq9RYjhdJVIFabWqZSs63ajmOt5FRBVW1CHVscjlOhgHdAAAAALTm36OwDOnjX1yBXe7UvsnzlQTxZiCl+xEDv6/FlJOFPblXbAwA6hvbp1DOn0Cm82Hv7lvJ0cPLuFTbmf516Xg==","LEVEL_ZERO_V1_SDK_PATH":"C:\\Program Files\\LevelZeroSDK\\1.24.0\\","LOCALAPPDATA":"C:\\Users\\gordon.tyler\\AppData\\Local","LOGONSERVER":"\\\\CI-DC01","NUMBER_OF_PROCESSORS":"16","NVM_HOME":"C:\\Users\\gordon.tyler\\AppData\\Local\\nvm","NVM_SYMLINK":"C:\\nvm4w\\nodejs","OPENOCD":"C:\\Tools\\xpack-openocd-0.11.0-4","ORIGINAL_XDG_CURRENT_DESKTOP":"undefined","OS":"Windows_NT","OneDrive":"C:\\Users\\gordon.tyler\\OneDrive - Synaptive Medical Inc","OneDriveCommercial":"C:\\Users\\gordon.tyler\\OneDrive - Synaptive Medical Inc","PATHEXT":".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW","POSH_INSTALLER":"winget","POSH_THEMES_PATH":"C:\\Users\\gordon.tyler\\AppData\\Local\\Programs\\oh-my-posh\\themes\\","POWERSHELL_DISTRIBUTION_CHANNEL":"MSI:Windows 10 Enterprise","PROCESSOR_ARCHITECTURE":"AMD64","PROCESSOR_IDENTIFIER":"Intel64 Family 6 Model 141 Stepping 1, GenuineIntel","PROCESSOR_LEVEL":"6","PROCESSOR_REVISION":"8d01","PSModulePath":"C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules","PUBLIC":"C:\\Users\\Public","Path":"C:\\msys64\\mingw32\\bin;C:\\msys64\\mingw32\\bin;C:\\Program Files (x86)\\oh-my-posh\\bin\\;C:\\Program Files\\Python312\\Scripts\\;C:\\Program Files\\Python312\\;C:\\Program Files\\Microsoft SDKs\\Azure\\CLI2\\wbin;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Python27\\;C:\\Python27\\Scripts;C:\\Program Files\\CollabNet\\Subversion Client;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\Program Files\\Microsoft SQL Server\\150\\Tools\\Binn\\;C:\\Program Files\\dotnet\\;C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\170\\Tools\\Binn\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Synaptive Medical\\Package Manager\\Binaries\\;C:\\Program Files\\doxygen\\bin;C:\\Program Files\\nodejs;C:\\Program Files\\CMake\\bin;C:\\Program Files\\PuTTY\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Users\\gordon.tyler\\AppData\\Local\\nvm;C:\\nvm4w\\nodejs;C:\\Program Files\\Git\\cmd;C:\\Program Files\\PowerShell\\7\\;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\Program Files\\Microsoft SQL Server\\170\\Tools\\Binn\\;C:\\Program Files (x86)\\Windows Kits\\10\\Windows Performance Toolkit\\;C:\\Users\\gordon.tyler\\AppData\\Local\\Programs\\Python\\Launcher\\;C:\\Users\\gordon.tyler\\AppData\\Local\\Programs\\oh-my-posh\\bin\\;C:\\Users\\gordon.tyler\\.cargo\\bin;C:\\Users\\gordon.tyler\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\gordon.tyler\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\gordon.tyler\\.dotnet\\tools;C:\\Users\\gordon.tyler\\Tools;C:\\Users\\gordon.tyler\\AppData\\Roaming\\Python\\Python312\\Scripts;C:\\msys64\\mingw64\\bin;C:\\msys64\\mingw32\\bin;C:\\Users\\gordon.tyler\\AppData\\Roaming\\nvm;C:\\Users\\gordon.tyler\\Documents\\PowerShell\\Scripts;C:\\Users\\gordon.tyler\\.dotnet\\tools;C:\\Users\\gordon.tyler\\AppData\\Local\\GitHubDesktop\\bin;C:\\Users\\gordon.tyler\\AppData\\Local\\Microsoft\\WinGet\\Links;C:\\Users\\gordon.tyler\\AppData\\Local\\Programs\\Ollama;C:\\Users\\gordon.tyler\\AppData\\Local\\Programs\\oh-my-posh\\bin;C:\\Users\\gordon.tyler\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\gordon.tyler\\AppData\\Local\\nvm;C:\\nvm4w\\nodejs","ProgramData":"C:\\ProgramData","ProgramFiles":"C:\\Program Files","ProgramFiles(x86)":"C:\\Program Files (x86)","ProgramW6432":"C:\\Program Files","SESSIONNAME":"Console","STM32_PRG_PATH":"C:\\Program Files\\STMicroelectronics\\STM32Cube\\STM32CubeProgrammer\\bin","StCore32":"C:\\Program Files\\sView\\","StCore64":"C:\\Program Files\\sView\\amd64\\","StShare":"C:\\Program Files\\sView\\","SystemDrive":"C:","SystemRoot":"C:\\WINDOWS","TEMP":"C:\\Users\\GORDON~1.TYL\\AppData\\Local\\Temp","TMP":"C:\\Users\\GORDON~1.TYL\\AppData\\Local\\Temp","USERDNSDOMAIN":"SYNAPTIVEMEDICAL.COM","USERDOMAIN":"SMI","USERDOMAIN_ROAMINGPROFILE":"SMI","USERNAME":"gordon.tyler","USERPROFILE":"C:\\Users\\gordon.tyler","VBOX_MSI_INSTALL_PATH":"C:\\Program Files\\Oracle\\VirtualBox\\","VCPKG_ROOT":"C:\\Users\\gordon.tyler\\dev\\vcpkg","VS140COMNTOOLS":"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\","VSCODE_CODE_CACHE_PATH":"C:\\Users\\gordon.tyler\\AppData\\Roaming\\Code\\CachedData\\385651c938df8a906869babee516bffd0ddb9829","VSCODE_CRASH_REPORTER_PROCESS_TYPE":"extensionHost","VSCODE_CWD":"C:\\WINDOWS\\system32","VSCODE_DOTNET_INSTALL_TOOL_ORIGINAL_HOME":"undefined","VSCODE_ESM_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","VSCODE_IPC_HOOK":"\\\\.\\pipe\\c44b53f1-1.104.3-main-sock","VSCODE_L10N_BUNDLE_LOCATION":"","VSCODE_NLS_CONFIG":"{\"userLocale\":\"en-us\",\"osLocale\":\"en-ca\",\"resolvedLanguage\":\"en\",\"defaultMessagesFile\":\"C:\\\\Users\\\\gordon.tyler\\\\AppData\\\\Local\\\\Programs\\\\Microsoft VS Code\\\\resources\\\\app\\\\out\\\\nls.messages.json\",\"locale\":\"en-us\",\"availableLanguages\":{}}","VSCODE_PID":"35612","ZES_ENABLE_SYSMAN":"1","asl.log":"Destination=file","windir":"C:\\WINDOWS","CMT_MINGW_PATH":"C:\\msys64\\mingw32\\bin"}
[ctest]    Site: GTYLER-5560
[ctest]    Build name: Win32-ninja
[ctest] Test project D:/dev/Synaptive/ModusV/embeddedfirmware/test/build
[ctest]     Start 92: LedMgrTests.Initialization
[ctest] 1/1 Test #92: LedMgrTests.Initialization .......***Failed    0.02 sec
[ctest] Running main() from D:/dev/Synaptive/ModusV/embeddedfirmware/test/build/_deps/googletest-src/googletest/src/gtest_main.cc
[ctest] Note: Google Test filter = LedMgrTests.Initialization
[ctest] [==========] Running 1 test from 1 test suite.
[ctest] [----------] Global test environment set-up.
[ctest] [----------] 1 test from LedMgrTests
[ctest] [ RUN      ] LedMgrTests.Initialization
[ctest] D:/dev/Synaptive/ModusV/embeddedfirmware/test/projects/pwrcon/src/TestLedMgr.cpp:135: Failure
[ctest] Value of: led_mgr->is_initialized(led_mgr)
[ctest]   Actual: true
[ctest] Expected: false
[ctest] 
[ctest] [  FAILED  ] LedMgrTests.Initialization (1 ms)
[ctest] [----------] 1 test from LedMgrTests (1 ms total)
[ctest] 
[ctest] [----------] Global test environment tear-down
[ctest] [==========] 1 test from 1 test suite ran. (1 ms total)
[ctest] [  PASSED  ] 0 tests.
[ctest] [  FAILED  ] 1 test, listed below:
[ctest] [  FAILED  ] LedMgrTests.Initialization
[ctest] 
[ctest]  1 FAILED TEST
[ctest] 
[ctest] 
[ctest] 0% tests passed, 1 tests failed out of 1
[ctest] 
[ctest] Total Test time (real) =   0.04 sec
[ctest] 
[ctest] The following tests FAILED:
[ctest] 	 92 - LedMgrTests.Initialization (Failed)
[ctest] Errors while running CTest
[proc] The command: "C:\Program Files\CMake\bin\ctest.exe" -j16 -C Debug -T test --output-on-failure -R ^LedMgrTests\.Initialization$ exited with code: 8
[ctest] CTest finished with return code 8
[ctest] Running main() from D:/dev/Synaptive/ModusV/embeddedfirmware/test/build/_deps/googletest-src/googletest/src/gtest_main.cc
Note: Google Test filter = LedMgrTests.Initialization
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from LedMgrTests
[ RUN      ] LedMgrTests.Initialization
D:/dev/Synaptive/ModusV/embeddedfirmware/test/projects/pwrcon/src/TestLedMgr.cpp:135: Failure
Value of: led_mgr->is_initialized(led_mgr)
  Actual: true
Expected: false

[  FAILED  ] LedMgrTests.Initialization (1 ms)
[----------] 1 test from LedMgrTests (1 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (1 ms total)
[  PASSED  ] 0 tests.
[  FAILED  ] 1 test, listed below:
[  FAILED  ] LedMgrTests.Initialization

 1 FAILED TEST

Test LedMgrTests.Initialization failed with exit code 1.

Additional Information

The tests are compiled using mingw-gcc on Windows 11.

doxxx avatar Oct 09 '25 17:10 doxxx

Hi @doxxx , thanks for reporting issue here! We have verified this issue on VS Code 1.105.0 + CMake tools 1.22.14 version. When hovering over a path in the test results output window, pressing the “Ctrl” key and clicking the path and allows it to navigate correctly. Could you help to recheck this issue? Thanks.

Image

yanghhhhhhh avatar Oct 10 '25 03:10 yanghhhhhhh

Using VS Code 1.105.0 and CMake Tools 1.22.14, it sometimes hyperlinks paths but not always. When selecting a failed test in the Test Results window, the paths are not hyperlinked, but when selecting a successful test from the same run the paths are hyperlinked. See attached video.

https://github.com/user-attachments/assets/f67d8ab8-1ad7-48a4-9751-4e2f456367a2

doxxx avatar Oct 14 '25 13:10 doxxx

@doxxx Thank you for your reply. We have been able to reproduce the issue. When clicking on the failed test under CMake Tools, the hyperlink does not work. Thank you. Repro Steps:

  1. Download the attached project(vscode-test-hyperlink-bug.zip) and open it.
  2. Select gcc, generate the cache and build.
  3. Open the Testing window, click ‘Run Test’.
  4. Open Test Result window, click on the failed test under CMake Tools.
  5. Press Ctrl and click on hyperlink path and observe the result. Image

Repro Video: Image

FYI: @gcampbell-msft

yanghhhhhhh avatar Oct 15 '25 02:10 yanghhhhhhh