[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