[CMake] compare two files - testing
James C. Sutherland
James.Sutherland at utah.edu
Mon Jul 6 13:54:01 EDT 2009
>
> execute_command(
> COMMAND ${test_cmd}
> COMMAND ${CMAKE_COMMAND} -E compare_files ${output_blessed} $
> {output_test}
> RESULT_VARIABLE test_not_successful
> OUTPUT_QUIET
> ERROR_QUIET
> )
>
> if( test_not_successful )
> message( SEND_ERROR "${output_test} does not match $
> {output_blessed}!" )
> endif( test_not_successful )
>
>
>
> and then in your CMakeLists.txt:
>
> add_test( "someImportantTest"
> ${CMAKE_COMMAND}
> -Dtest_cmd="${CMAKE_BINARY_DIR}/tests/someImportantTestProgram --
> with arguments"
> -Doutput_blessed="${CMAKE_SOURCE_DIR}/tests/output/
> someImportatanTestProgram.output"
> -Doutput_test="${CMAKE_BINARY_DIR}/someImportatanTestProgram.output"
> -P ${CMAKE_SOURCE_DIR}/CMake/run_test.cmake
> )
>
I have noticed that if I use
-Dtest_cmd="${CMAKE_BINARY_DIR}/tests/someImportantTestProgram --
with arguments"
it results in errors - it appears that the test_cmd variable is not
interpreted properly because the resulting process does not get
executed. For executables without arguments, removing quotes seems to
work to set test_cmd properly.
For example
# in CMakeLists.txt
add_test( dummy_1
${CMAKE_COMMAND}
-Dtest_cmd="ls -lah"
-P ${CMAKE_SOURCE_DIR}/util/try.cmake
)
# in try.cmake
if( NOT test_cmd )
message( FATAL_ERROR "Variable test_cmd not defined" )
endif( NOT test_cmd )
execute_process( COMMAND ${test_cmd} )
This does not work (e.g. the output in Testing/Temporary/LastTest.log
does not show that the command actually executed). The results in the
LastTest.log file are
> Start testing: Jul 06 11:53 MDT
> ----------------------------------------------------------
> Changing directory into: /Users/u0033394/projects/ExprLib/build/util
> 1/1 Testing: dummy_1
> 1/1 Test: dummy_1
> Command: "/Applications/CMake 2.6-4.app/Contents/bin/cmake" "-
> Dtest_cmd="ls -lah"" "-P" "/Users/u0033394/projects/ExprLib/util/
> try.cmake"
> Directory: /Users/u0033394/projects/ExprLib/build/util
> "dummy_1" start time: Jul 06 11:53 MDT
> Output:
> ----------------------------------------------------------
> ----------------------------------------------------------
> "dummy_1" end time: Jul 06 11:53 MDT
> "dummy_1" time elapsed: 00:00:00
> ----------------------------------------------------------
>
> End testing: Jul 06 11:53 MDT
Any ideas?
More information about the CMake
mailing list