Pergunta

Eu estou construindo alguns testes usando CTest.Normalmente, eu posso configurar o teste simplesmente a linha:

ADD_TEST(Test_Name executable args)

No entanto, eu tenho um problema, eu tenho alguns testes que exigem dois comandos a serem executados em ordem para que ele funcione, existe alguma maneira que eu possa executar dois programas dentro de um único ctest, ou eu sou obrigado a criar um novo teste para cada um?

Obrigado.

Foi útil?

Solução

O add_test comando só aceita um executável, mas você pode correr qualquer executável que é realmente um script.Para fazer isso em uma plataforma cruzada forma, escrever o script em CMake si.O CMake tem o -P opção para a execução arbitrária de fragmentos da CMake linguagem de script quando você executar make ou make test, em vez de Makefile tempo de geração.

Infelizmente você não pode passar argumentos para tal script.Mas você pode definir variáveis de valores, que é tão bom.

Este script você pode chamar runtests.cmake, ele executa os comandos CMD1 CMD2 e e verifica cada uma para um tipo de retorno diferente de zero código, retornando fora do CMake-se com um erro se o que acontece:

macro(EXEC_CHECK CMD)
    execute_process(COMMAND ${CMD} RESULT_VARIABLE CMD_RESULT)
    if(CMD_RESULT)
        message(FATAL_ERROR "Error running ${CMD}")
    endif()
endmacro()
exec_check(${CMD1})
exec_check(${CMD2})

...e, em seguida, adicionar os seus casos de teste, como por exemplo:

add_executable(test1 test1.c)
add_executable(test2 test2.c)
add_test(NAME test
    COMMAND ${CMAKE_COMMAND}
            -DCMD1=$<TARGET_FILE:test1>
            -DCMD2=$<TARGET_FILE:test2>
    -P ${CMAKE_CURRENT_SOURCE_DIR}/runtests.cmake)

$<TARGET_FILE:test1> fica expandiu-se para o caminho completo para o executável em build-a geração de arquivo de tempo.Quando você executar make test ou equivalente, esta será executado "cmake -P runtests.o cmake" definir o CMD1 CMD2 e variáveis adequadas para o teste de programas.O script, em seguida, executará o 2 programas em seqüência.Se um dos programas de teste falhar, o teste falha.Se você precisa ver o resultado do teste, você pode executar make test ARGS=-V

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top