CTest — использование меток для разных тестов CTestTestfile.cmake

#cmake #ctest

#cmake #ctest

Вопрос:

Я не могу найти, как указать метки. Это должно быть что-то вроде

 ADD_TEST( FirstTest RunSomeProgram "withArguments" )
SET_TESTS_PROPERTIES( FirstTest PROPERTIES LABEL "TESTLABEL" )
  

Может кто-нибудь сказать мне, как я могу установить одну из этих меток, к которой я могу получить доступ с помощью

 ctest -S someScript -L TESTLABEL
  

Ответ №1:

Вы близки — свойство test названо LABELS , а не LABEL .

Есть несколько способов установки меток; тот, который вы выбрали (используя set_tests_properties ), имеет небольшую ошибку. Подпись:

 set_tests_properties(test1 [test2...] PROPERTIES prop1 value1 prop2 value2)
  

Это означает, что к каждому свойству может быть применено только одно значение. Итак, если вы хотите применить несколько меток к тестам таким образом, вам нужно «обмануть» CMake, передав список меток в виде одной строки, содержащей список, разделенный точкой с запятой:

 set_tests_properties(FirstTest PROPERTIES LABELS "TESTLABEL;UnitTest;FooModule")
  

или

 set(Labels TESTLABEL UnitTest FooModule)
set_tests_properties(FirstTest PROPERTIES LABELS "${Labels}")  # Quotes essential
  

С другой стороны, вы можете передать правильный список меток, используя более общую set_property команду:

 set_property(TEST FirstTest PROPERTY LABELS TESTLABEL UnitTest FooModule)
  

или

 set_property(TEST FirstTest PROPERTY LABELS ${Labels})  # No quotes needed
  

Небольшим недостатком этой команды является то, что вы можете применить только одно свойство для каждого вызова.