Merge topic 'test-major-version'

d1f3bfe Tests: add MajorVersionSelection tests
This commit is contained in:
David Cole 2012-10-31 16:34:32 -04:00 committed by CMake Topic Stage
commit fb190dfb9a
3 changed files with 69 additions and 1 deletions

View File

@ -38,3 +38,21 @@ add_test(CMakeOnly.ProjectInclude ${CMAKE_CMAKE_COMMAND}
-DCMAKE_ARGS=-DCMAKE_PROJECT_ProjectInclude_INCLUDE=${CMAKE_CURRENT_SOURCE_DIR}/ProjectInclude/include.cmake
-P ${CMAKE_CURRENT_BINARY_DIR}/Test.cmake
)
include(${CMAKE_SOURCE_DIR}/Modules/CMakeParseArguments.cmake)
function(add_major_test module)
cmake_parse_arguments(MAJOR_TEST "NOLANG" "VERSION_VAR" "VERSIONS" ${ARGN})
foreach (_version IN LISTS MAJOR_TEST_VERSIONS)
add_test(CMakeOnly.MajorVersionSelection-${module}_${_version}
${CMAKE_CMAKE_COMMAND}
-DTEST=MajorVersionSelection-${module}_${_version}
-DTEST_SOURCE=MajorVersionSelection
"-DCMAKE_ARGS=-DMAJOR_TEST_MODULE=${module};-DMAJOR_TEST_VERSION=${_version};-DMAJOR_TEST_NO_LANGUAGES=${MAJOR_TEST_NOLANG};-DMAJOR_TEST_VERSION_VAR=${MAJOR_TEST_VERSION_VAR}"
-P ${CMAKE_CURRENT_BINARY_DIR}/Test.cmake
)
endforeach ()
endfunction()
add_major_test(PythonLibs VERSIONS 2 3 VERSION_VAR PYTHONLIBS_VERSION_STRING)
add_major_test(PythonInterp NOLANG VERSIONS 2 3 VERSION_VAR PYTHON_VERSION_STRING)

View File

@ -0,0 +1,46 @@
cmake_minimum_required(VERSION 2.8)
if (NOT MAJOR_TEST_MODULE OR NOT MAJOR_TEST_VERSION)
message(FATAL_ERROR "test selection variables not set up")
endif ()
if (MAJOR_TEST_NO_LANGUAGES)
project(major_detect_${MAJOR_TEST_MODULE}_${MAJOR_TEST_VERSION} NONE)
else ()
project(major_detect_${MAJOR_TEST_MODULE}_${MAJOR_TEST_VERSION})
endif ()
find_package(${MAJOR_TEST_MODULE} ${MAJOR_TEST_VERSION})
if (MAJOR_TEST_VERSION_VAR)
set(VERSION_VAR "${MAJOR_TEST_VERSION_VAR}")
else ()
set(VERSION_VAR "${MAJOR_TEST_MODULE}_VERSION_STRING")
endif ()
string(TOUPPER "${MAJOR_TEST_MODULE}" MODULE_UPPER)
if ( ( ${MAJOR_TEST_MODULE}_FOUND OR ${MODULE_UPPER}_FOUND ) AND "${VERSION_VAR}")
message(STATUS "${VERSION_VAR} is '${${VERSION_VAR}}'")
if ("${VERSION_VAR}" VERSION_LESS MAJOR_TEST_VERSION)
message(SEND_ERROR "Found version ${${VERSION_VAR}} is less than requested major version ${MAJOR_TEST_VERSION}")
endif ()
math(EXPR V_PLUS_ONE "${MAJOR_TEST_VERSION} + 1")
if ("${VERSION_VAR}" VERSION_GREATER V_PLUS_ONE)
message(SEND_ERROR "Found version ${${VERSION_VAR}} is greater than requested major version ${MAJOR_TEST_VERSION}")
endif ()
endif ()
if ( ( ${MAJOR_TEST_MODULE}_FOUND OR ${MODULE_UPPER}_FOUND ) AND ${MAJOR_TEST_MODULE}_VERSION_MAJOR)
message(STATUS "${MAJOR_TEST_MODULE}_VERSION_MAJOR is '${${MAJOR_TEST_MODULE}_VERSION_MAJOR}'")
if (NOT ${MAJOR_TEST_VERSION} EQUAL ${MAJOR_TEST_MODULE}_VERSION_MAJOR)
message(SEND_ERROR "We requested major version ${MAJOR_TEST_VERSION} but ${MAJOR_TEST_MODULE} set ${MAJOR_TEST_MODULE}_VERSION_MAJOR to ${${MAJOR_TEST_MODULE}_VERSION_MAJOR}")
endif ()
endif ()
if ( ( ${MAJOR_TEST_MODULE}_FOUND OR ${MODULE_UPPER}_FOUND ) AND ${MODULE_UPPER}_VERSION_MAJOR)
message(STATUS "${MODULE_UPPER}_VERSION_MAJOR is '${${MODULE_UPPER}_VERSION_MAJOR}'")
if (NOT ${MAJOR_TEST_VERSION} EQUAL ${MODULE_UPPER}_VERSION_MAJOR)
message(SEND_ERROR "We requested major version ${MAJOR_TEST_VERSION} but ${MAJOR_TEST_MODULE} set ${MODULE_UPPER}_VERSION_MAJOR to ${${MODULE_UPPER}_VERSION_MAJOR}")
endif ()
endif ()

View File

@ -1,4 +1,8 @@
set(source_dir "@CMAKE_CURRENT_SOURCE_DIR@/${TEST}")
if (NOT TEST_SOURCE)
set(TEST_SOURCE "${TEST}")
endif ()
set(source_dir "@CMAKE_CURRENT_SOURCE_DIR@/${TEST_SOURCE}")
set(binary_dir "@CMAKE_CURRENT_BINARY_DIR@/${TEST}-build")
file(REMOVE_RECURSE "${binary_dir}")
file(MAKE_DIRECTORY "${binary_dir}")