CMAKE CTEST邮政测试删除文件



我有一个通过多个测试进行的CMAKE项目,即

add_test(test_title executable arg1 arg2)

在运行这些测试时,产生了许多文件。测试运行后,我想删除所产生的这些文件之一,即

delete(${arg1}.txt)
    or
delete(${arg2}.pdf)

如果您可以提供一个示例,将非常感谢。

正如字母中的建议一样,您可以用cmake脚本包装实际的测试命令。在您的情况下,可能是:

add_test(NAME test_title
  COMMAND ${CMAKE_COMMAND}
    -Darg1=${arg1}
    -Darg2=${arg2}
    -P ${CMAKE_CURRENT_SOURCE_DIR}/runtest.cmake
)

和包装器runtest.cmake可以是:

execute_process(COMMAND executable ${arg1} ${arg2}
  TIMEOUT 1000 # it should be less than in add_test
  RESULT_VARIABLE status
)
file(REMOVE ${arg1}.txt)
file(REMOVE ${arg2}.txt)
if(status)
  MESSAGE(FATAL_ERROR "Test executing status: ${status}")
endif()

我不确定该选项是否在提出问题时可用,但是我沿着:

的行使用了一个hack
  • 定义测试:test_title
  • 定义另一个测试:test_title_remove_file
    • 取决于test_title(因此将首先运行test_title)
    • 需要要删除的文件存在(明确比隐式更好)
    • 调用cmake -E remove <file> DOC

这样,您将进行一次假额外的测试,但至少它会告诉您是否有任何错误。

我的实现:

add_test(NAME test_title_remove_file
    COMMAND ${CMAKE_COMMAND} -E remove
        ${arg1}
        ${CMAKE_CURRENT_BINARY_DIR}/${arg2}
)
set_tests_properties(test_title_remove_xmls PROPERTIES
    DEPENDS test_title ## note it is your test_title
    REQUIRED_FILES 
    ${arg1};
    ${CMAKE_CURRENT_BINARY_DIR}/${arg2};
)

相关内容

  • 没有找到相关文章

最新更新