Use generalized RunCMake test infrastrucure for find_package test

This commit is contained in:
Brad King 2012-03-09 16:34:09 -05:00
parent 42a81e7119
commit eb33000d75
34 changed files with 19 additions and 84 deletions

View File

@ -8,4 +8,3 @@ macro(add_CMakeCommands_test test)
endmacro()
add_CMakeCommands_test(build_command)
add_CMakeCommands_test(find_package)

View File

@ -1,3 +0,0 @@
cmake_minimum_required(VERSION 2.8)
project(${TEST} NONE)
include(${TEST}.cmake)

View File

@ -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)

View File

@ -39,3 +39,5 @@ macro(add_RunCMake_test test)
-P "${CMAKE_CURRENT_SOURCE_DIR}/${test}/RunCMakeTest.cmake"
)
endmacro()
add_RunCMake_test(find_package)

View File

@ -0,0 +1,3 @@
cmake_minimum_required(VERSION 2.8)
project(${RunCMake_TEST} NONE)
include(${RunCMake_TEST}.cmake)

View File

@ -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)