Open
Description
Describe the bug
I am recently getting the following error with latest devel release (ceed268):
CMake Error at /path/to/Catch2/lib/cmake/Catch2/CatchAddTests.cmake:138 (string):
string sub-command JSON failed parsing json string: * Line 1, Column 6
Missing ',' or ']' in array declaration
.
Call Stack (most recent call first):
/path/to/Catch2/lib/cmake/Catch2/CatchAddTests.cmake:235 (catch_discover_tests_impl)
Line 138 of CatchAddTests.cmake is:
string(JSON version GET "${listing_output}" "version")
adding a CMake message just before the line for the value listing_output
yields:
{
"version": 1,
"metadata": {
"name": "ut_saccades_frameworkd",
"rng-seed": 994172703,
"catch2-version": "3.8.1"
},
"listings": {
"tests": [
{
Expected behavior
I've isolated the commit which causes the error:
7d7b2f8
Support adding test tags as CTest labels in catch_discover_tests
which does indeed add those lines to CatchAddTests.cmake.:
- # Parse output
- foreach(line ${output})
- set(test "${line}")
+ # Parse JSON output for list of tests/class names/tags
+ string(JSON version GET "${listing_output}" "version")
+ if (NOT version STREQUAL "1")
+ message(FATAL_ERROR "Unsupported catch output version: '${version}'")
+ endif()
+
+ # Speed-up reparsing by cutting away unneeded parts of JSON.
+ string(JSON test_listing GET "${listing_output}" "listings" "tests")
+ string(JSON num_tests LENGTH "${test_listing}")
+ # CMake's foreach-RANGE is inclusive, so we have to subtract 1
+ math(EXPR num_tests "${num_tests} - 1")
Reproduction steps
Haven't done this yet but will try to reproduce with small example if necessary.
Platform information:
- Windows 11:
- Visual Studio Community 17.4.3
- CMake: 3.25.1
- Ubuntu 22.04:
- gcc: 11.4
- CMake: 3.22.1
- Catch: ceed268
Additional context
.
Metadata
Metadata
Assignees
Labels
No labels