Use generalized RunCMake test infrastrucure for find_package test
This commit is contained in:
parent
42a81e7119
commit
eb33000d75
|
@ -8,4 +8,3 @@ macro(add_CMakeCommands_test test)
|
|||
endmacro()
|
||||
|
||||
add_CMakeCommands_test(build_command)
|
||||
add_CMakeCommands_test(find_package)
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
cmake_minimum_required(VERSION 2.8)
|
||||
project(${TEST} NONE)
|
||||
include(${TEST}.cmake)
|
|
@ -1,80 +0,0 @@
|
|||
if(NOT DEFINED dir)
|
||||
message(FATAL_ERROR "dir not defined")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED gen)
|
||||
message(FATAL_ERROR "gen not defined")
|
||||
endif()
|
||||
|
||||
# TODO: Generalize this for other tests.
|
||||
function(run_test test)
|
||||
set(top_src "${CMAKE_CURRENT_LIST_DIR}")
|
||||
set(top_bin "${dir}")
|
||||
if(EXISTS ${top_src}/${test}-result.txt)
|
||||
file(READ ${top_src}/${test}-result.txt expect_result)
|
||||
string(REGEX REPLACE "\n+$" "" expect_result "${expect_result}")
|
||||
else()
|
||||
set(expect_result 0)
|
||||
endif()
|
||||
foreach(o out err)
|
||||
if(EXISTS ${top_src}/${test}-std${o}.txt)
|
||||
file(READ ${top_src}/${test}-std${o}.txt expect_std${o})
|
||||
string(REGEX REPLACE "\n+$" "" expect_std${o} "${expect_std${o}}")
|
||||
else()
|
||||
unset(expect_std${o})
|
||||
endif()
|
||||
endforeach()
|
||||
set(source_dir "${top_src}")
|
||||
set(binary_dir "${top_bin}/${test}-build")
|
||||
file(REMOVE_RECURSE "${binary_dir}")
|
||||
file(MAKE_DIRECTORY "${binary_dir}")
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} "${source_dir}" -G "${gen}" -DTEST=${test}
|
||||
WORKING_DIRECTORY "${binary_dir}"
|
||||
OUTPUT_VARIABLE actual_stdout
|
||||
ERROR_VARIABLE actual_stderr
|
||||
RESULT_VARIABLE actual_result
|
||||
)
|
||||
set(msg "")
|
||||
if(NOT "${actual_result}" STREQUAL "${expect_result}")
|
||||
set(msg "${msg}Result is [${actual_result}], not [${expect_result}].\n")
|
||||
endif()
|
||||
foreach(o out err)
|
||||
string(REGEX REPLACE "\n+$" "" actual_std${o} "${actual_std${o}}")
|
||||
set(expect_${o} "")
|
||||
if(DEFINED expect_std${o})
|
||||
if(NOT "${actual_std${o}}" MATCHES "${expect_std${o}}")
|
||||
string(REGEX REPLACE "\n" "\n expect-${o}> " expect_${o}
|
||||
" expect-${o}> ${expect_std${o}}")
|
||||
set(expect_${o} "Expected std${o} to match:\n${expect_${o}}\n")
|
||||
set(msg "${msg}std${o} does not match that expected.\n")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
if(msg)
|
||||
string(REGEX REPLACE "\n" "\n actual-out> " actual_out " actual-out> ${actual_stdout}")
|
||||
string(REGEX REPLACE "\n" "\n actual-err> " actual_err " actual-err> ${actual_stderr}")
|
||||
message(SEND_ERROR "${test} - FAILED:\n"
|
||||
"${msg}"
|
||||
"${expect_out}"
|
||||
"Actual stdout:\n${actual_out}\n"
|
||||
"${expect_err}"
|
||||
"Actual stderr:\n${actual_err}\n"
|
||||
)
|
||||
else()
|
||||
message(STATUS "${test} - PASSED")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
run_test(MissingNormal)
|
||||
run_test(MissingNormalRequired)
|
||||
run_test(MissingNormalVersion)
|
||||
run_test(MissingNormalWarnNoModuleOld)
|
||||
run_test(MissingNormalWarnNoModuleNew)
|
||||
run_test(MissingModule)
|
||||
run_test(MissingModuleRequired)
|
||||
run_test(MissingConfig)
|
||||
run_test(MissingConfigOneName)
|
||||
run_test(MissingConfigRequired)
|
||||
run_test(MissingConfigVersion)
|
||||
run_test(MixedModeOptions)
|
|
@ -39,3 +39,5 @@ macro(add_RunCMake_test test)
|
|||
-P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake"
|
||||
)
|
||||
endmacro()
|
||||
|
||||
add_RunCMake_test(find_package)
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
cmake_minimum_required(VERSION 2.8)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
|
@ -0,0 +1,14 @@
|
|||
include(RunCMake)
|
||||
|
||||
run_cmake(MissingNormal)
|
||||
run_cmake(MissingNormalRequired)
|
||||
run_cmake(MissingNormalVersion)
|
||||
run_cmake(MissingNormalWarnNoModuleOld)
|
||||
run_cmake(MissingNormalWarnNoModuleNew)
|
||||
run_cmake(MissingModule)
|
||||
run_cmake(MissingModuleRequired)
|
||||
run_cmake(MissingConfig)
|
||||
run_cmake(MissingConfigOneName)
|
||||
run_cmake(MissingConfigRequired)
|
||||
run_cmake(MissingConfigVersion)
|
||||
run_cmake(MixedModeOptions)
|
Loading…
Reference in New Issue