Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
CMake
CMake
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,307
    • Issues 3,307
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 15
    • Merge Requests 15
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • External Wiki
    • External Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • CMake
  • CMakeCMake
  • Issues
  • #21490

Closed
Open
Created Nov 24, 2020 by Lukasz Towarek@ltowarek

CTest: Add support for custom test properties in ctest --show-only=json-v1

From what I can see here, ctest currently dumps only predefined list of test properties to JSON format. In my case, tests declared with add_test contain custom properties defined with define_property and set with set_property. Unfortunately, such metadata can't be exported from CMake with ctest --show-only=json-v1 command.

Example application can be found below.

CMakeLists.txt:
project(my_project)
cmake_minimum_required(VERSION 3.16)

include(CTest)

define_property(TEST PROPERTY MY_PROPERTY BRIEF_DOCS "brief docs" FULL_DOCS "full docs")

add_test(
  NAME my_test_name
  COMMAND ${CMAKE_COMMAND} --help
)

set_property(
  TEST my_test_name
  PROPERTY MY_PROPERTY
  my_data_1
  my_data_2
)

get_property(MY_VAR TEST my_test_name PROPERTY MY_PROPERTY)
message(STATUS "MY_VAR: ${MY_VAR}")
CMake:
developer@ltowarek-desk:~/workspace/cmake_test$ cmake -B build -S .
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- MY_VAR: my_data_1;my_data_2
-- Configuring done
-- Generating done
-- Build files have been written to: /home/developer/workspace/cmake_test/build
CTest:
developer@ltowarek-desk:~/workspace/cmake_test/build$ ctest --show-only=json-v1
{
  "backtraceGraph" : 
  {
    "commands" : 
    [
      "add_test"
    ],
    "files" : 
    [
      "/home/developer/workspace/cmake_test/CMakeLists.txt"
    ],
    "nodes" : 
    [
      {
        "file" : 0
      },
      {
        "command" : 0,
        "file" : 0,
        "line" : 8,
        "parent" : 0
      }
    ]
  },
  "kind" : "ctestInfo",
  "tests" : 
  [
    {
      "backtrace" : 1,
      "command" : 
      [
        "/usr/bin/cmake",
        "--help"
      ],
      "name" : "my_test_name",
      "properties" : 
      [
        {
          "name" : "WORKING_DIRECTORY",
          "value" : "/home/developer/workspace/cmake_test/build"
        }
      ]
    }
  ],
  "version" : 
  {
    "major" : 1,
    "minor" : 0
  }
}

BTW, exactly the same problem is also mentioned in CMake Test Explorer extension for Visual Studio Code. Their workaround is to declare custom properties inside ENVIRONMENT property.

Edited Nov 24, 2020 by Brad King
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None