Skip to content

JSON failed parsing json string #2999

Open
@skillcheck

Description

@skillcheck

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions