diff options
author | Marc Chevrier <marc.chevrier@gmail.com> | 2020-05-05 13:58:26 (GMT) |
---|---|---|
committer | Marc Chevrier <marc.chevrier@gmail.com> | 2020-05-07 09:19:36 (GMT) |
commit | 25978c7a00324bb4007224b562d3f29a09dc497f (patch) | |
tree | af1ea855fb391608cea3a0ad9b867ac4dec4212b /Tests | |
parent | 6ccbf6ba711864d4498b211a58ef8449a4e0fa34 (diff) | |
download | CMake-25978c7a00324bb4007224b562d3f29a09dc497f.zip CMake-25978c7a00324bb4007224b562d3f29a09dc497f.tar.gz CMake-25978c7a00324bb4007224b562d3f29a09dc497f.tar.bz2 |
FindPython: ensure any specified version is correctly handled
Fixes: #20674
Diffstat (limited to 'Tests')
-rw-r--r-- | Tests/FindPython/CMakeLists.txt | 93 | ||||
-rw-r--r-- | Tests/FindPython/ExactVersion/CMakeLists.txt | 56 |
2 files changed, 149 insertions, 0 deletions
diff --git a/Tests/FindPython/CMakeLists.txt b/Tests/FindPython/CMakeLists.txt index 5c954e2..9b89832 100644 --- a/Tests/FindPython/CMakeLists.txt +++ b/Tests/FindPython/CMakeLists.txt @@ -128,6 +128,99 @@ if(CMake_TEST_FindPython) --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> ) + add_test(NAME FindPython.Python2.ExactVersion.LOCATION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python2.ExactVersion.LOCATION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_MAJOR_VERSION=2 + -DPython_REQUESTED_VERSION=2.1.2 + -DPython2_FIND_STRATEGY=LOCATION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.Python2.ExactVersion.VERSION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python2.ExactVersion.VERSION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_MAJOR_VERSION=2 + -DPython_REQUESTED_VERSION=2.1.2 + -DPython2_FIND_STRATEGY=VERSION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.Python3.ExactVersion.LOCATION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python3.ExactVersion.LOCATION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_MAJOR_VERSION=3 + -DPython_REQUESTED_VERSION=3.1.2 + -DPython3_FIND_STRATEGY=LOCATION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.Python3.ExactVersion.VERSION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python3.ExactVersion.VERSION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_MAJOR_VERSION=3 + -DPython_REQUESTED_VERSION=3.1.2 + -DPython3_FIND_STRATEGY=VERSION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.Python.V2.ExactVersion.LOCATION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.ExactVersion.LOCATION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_REQUESTED_VERSION=2.1.2 + -DPython_FIND_STRATEGY=LOCATION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.Python.V2.ExactVersion.VERSION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python.V2.ExactVersion.VERSION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_REQUESTED_VERSION=2.1.2 + -DPython_FIND_STRATEGY=VERSION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.Python.V3.ExactVersion.LOCATION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.ExactVersion.LOCATION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_REQUESTED_VERSION=3.1.2 + -DPython_FIND_STRATEGY=LOCATION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.Python.V3.ExactVersion.VERSION COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindPython/ExactVersion" + "${CMake_BINARY_DIR}/Tests/FindPython/Python.V3.ExactVersion.VERSION" + ${build_generator_args} + --build-project TestExactVersion + --build-options ${build_options} -DPython_REQUESTED_VERSION=3.1.2 + -DPython_FIND_STRATEGY=VERSION + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) + add_test(NAME FindPython.MultiplePackages COMMAND ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> --build-and-test diff --git a/Tests/FindPython/ExactVersion/CMakeLists.txt b/Tests/FindPython/ExactVersion/CMakeLists.txt new file mode 100644 index 0000000..e09f73a --- /dev/null +++ b/Tests/FindPython/ExactVersion/CMakeLists.txt @@ -0,0 +1,56 @@ +cmake_minimum_required(VERSION 3.1) + +project(TestExactVersion C) + +find_package(Python${Python_MAJOR_VERSION} ${Python_REQUESTED_VERSION} COMPONENTS Interpreter Development) +if (NOT Python${Python_MAJOR_VERSION}_FOUND) + message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION}") +endif() +if (NOT Python${Python_MAJOR_VERSION}_Interpreter_FOUND) + message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION} Interpreter") +endif() +if (NOT Python${Python_MAJOR_VERSION}_Development_FOUND) + message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION} Development") +endif() + +if(NOT TARGET Python${Python_MAJOR_VERSION}::Interpreter) + message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Interpreter not found") +endif() + +if(NOT TARGET Python${Python_MAJOR_VERSION}::Python) + message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Python not found") +endif() +if(NOT TARGET Python${Python_MAJOR_VERSION}::Module) + message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Module not found") +endif() + + +# reset artifacts and second search with exact version already founded +unset (Python${Python_MAJOR_VERSION}_EXECUTABLE) +unset (_Python${Python_MAJOR_VERSION}_EXECUTABLE CACHE) + +unset (_Python${Python_MAJOR_VERSION}_LIBRARY_RELEASE CACHE) +unset (_Python${Python_MAJOR_VERSION}_INCLUDE_DIR CACHE) + +set (Python_REQUESTED_VERSION ${Python${Python_MAJOR_VERSION}_VERSION}) +find_package(Python${Python_MAJOR_VERSION} ${Python_REQUESTED_VERSION} EXACT COMPONENTS Interpreter Development) +if (NOT Python${Python_MAJOR_VERSION}_FOUND) + message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION}") +endif() +if (NOT Python${Python_MAJOR_VERSION}_Interpreter_FOUND) + message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION} Interpreter") +endif() +if (NOT Python${Python_MAJOR_VERSION}_Development_FOUND) + message (FATAL_ERROR "Fail to found Python ${Python_REQUESTED_VERSION} Development") +endif() + +if(NOT TARGET Python${Python_MAJOR_VERSION}::Interpreter) + message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Interpreter not found") +endif() + +if(NOT TARGET Python${Python_MAJOR_VERSION}::Python) + message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Python not found") +endif() +if(NOT TARGET Python${Python_MAJOR_VERSION}::Module) + message(SEND_ERROR "Python${Python_MAJOR_VERSION}::Module not found") +endif() |