mirror of
https://github.com/ptitSeb/box64.git
synced 2024-11-27 03:43:52 +08:00
65 lines
2.2 KiB
CMake
65 lines
2.2 KiB
CMake
# arguments checking
|
|
if( NOT TEST_PROGRAM )
|
|
message( FATAL_ERROR "Require TEST_PROGRAM to be defined" )
|
|
endif( NOT TEST_PROGRAM )
|
|
if( NOT TEST_ARGS )
|
|
message( FATAL_ERROR "Require TEST_ARGS to be defined" )
|
|
endif( NOT TEST_ARGS )
|
|
if( NOT TEST_OUTPUT )
|
|
message( FATAL_ERROR "Require TEST_OUTPUT to be defined" )
|
|
endif( NOT TEST_OUTPUT )
|
|
if( NOT TEST_REFERENCE )
|
|
message( FATAL_ERROR "Require TEST_REFERENCE to be defined" )
|
|
endif( NOT TEST_REFERENCE )
|
|
if(NOT DEFINED ENV{INTERPRETER})
|
|
set(ENV{INTERPRETER} "")
|
|
endif()
|
|
|
|
set(ENV{BOX64_LOG} 0)
|
|
set(ENV{BOX64_NOBANNER} 1)
|
|
if( EXISTS ${CMAKE_SOURCE_DIR}/x64lib )
|
|
# we are inside box64 folder
|
|
set(ENV{BOX64_LD_LIBRARY_PATH} ${CMAKE_SOURCE_DIR}/x64lib)
|
|
else()
|
|
# we are inside build folder
|
|
set(ENV{BOX64_LD_LIBRARY_PATH} ${CMAKE_SOURCE_DIR}/../x64lib)
|
|
endif( EXISTS ${CMAKE_SOURCE_DIR}/x64lib )
|
|
|
|
# run the test program, capture the stdout/stderr and the result var
|
|
execute_process(
|
|
COMMAND $ENV{INTERPRETER} ${TEST_PROGRAM} ${TEST_ARGS} ${TEST_ARGS2}
|
|
OUTPUT_FILE ${TEST_OUTPUT}
|
|
ERROR_VARIABLE TEST_ERROR
|
|
RESULT_VARIABLE TEST_RESULT
|
|
)
|
|
|
|
# if the return value is !=0 bail out
|
|
if( TEST_RESULT )
|
|
get_filename_component(TESTNAME "${TEST_ARGS}" NAME)
|
|
file(RENAME "${TEST_OUTPUT}" "${CMAKE_BINARY_DIR}/${TESTNAME}.out")
|
|
file(WRITE "${CMAKE_BINARY_DIR}/${TESTNAME}.err" ${TEST_ERROR})
|
|
message( FATAL_ERROR "Failed: Test program ${TEST_PROGRAM} exited != 0.\n${TEST_ERROR}" )
|
|
endif( TEST_RESULT )
|
|
|
|
# now compare the output with the reference
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_OUTPUT} ${TEST_REFERENCE}
|
|
RESULT_VARIABLE TEST_RESULT
|
|
)
|
|
|
|
# again, if return value is !=0 scream and shout
|
|
if( TEST_RESULT )
|
|
get_filename_component(TESTNAME "${TEST_ARGS}" NAME)
|
|
file(RENAME "${TEST_OUTPUT}" "${CMAKE_BINARY_DIR}/${TESTNAME}.out")
|
|
file(WRITE "${CMAKE_BINARY_DIR}/${TESTNAME}.err" ${TEST_ERROR})
|
|
message( FATAL_ERROR "Failed: The output of ${TEST_PROGRAM} did not match ${TEST_REFERENCE}")
|
|
endif( TEST_RESULT )
|
|
|
|
# remove the temporary files if they exist
|
|
if( EXISTS ${TEST_OUTPUT} )
|
|
file(REMOVE "${TEST_OUTPUT}")
|
|
endif()
|
|
|
|
# everything went fine...
|
|
message( "Passed: The output of ${TEST_PROGRAM} matches ${TEST_REFERENCE}" )
|