FindPython: add capability to select python version for the tests

This commit is contained in:
Marc Chevrier
2023-06-13 17:46:32 +02:00
parent 883cbf4171
commit 711d1da125
23 changed files with 526 additions and 395 deletions

View File

@@ -2,32 +2,44 @@ cmake_minimum_required(VERSION 3.5)
project(TestMultiplePackages C)
find_package (Python2 REQUIRED COMPONENTS Interpreter Development)
find_package (Python3 REQUIRED COMPONENTS Interpreter Development)
# Must find Python 3
find_package (Python REQUIRED)
if (NOT Python3_EXECUTABLE STREQUAL Python_EXECUTABLE)
message (FATAL_ERROR
"Python interpreters do not match:\n"
" Python_EXECUTABLE='${Python_EXECUTABLE}'\n"
" Python3_EXECUTABLE='${Python3_EXECUTABLE}'\n"
if (CMake_TEST_FindPython2)
find_package (Python2 REQUIRED COMPONENTS Interpreter Development)
if (NOT CMake_TEST_FindPython3 AND NOT Python2_EXECUTABLE STREQUAL Python_EXECUTABLE)
message (FATAL_ERROR
"Python interpreters do not match:\n"
" Python_EXECUTABLE='${Python_EXECUTABLE}'\n"
" Python2_EXECUTABLE='${Python3_EXECUTABLE}'\n"
)
endif()
Python2_add_library (spam2 MODULE ../spam.c)
target_compile_definitions (spam2 PRIVATE PYTHON2)
add_test (NAME python2_spam2
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:spam3>"
"${Python2_EXECUTABLE}" -c "import spam2; spam2.system(\"cd\")")
endif()
if (CMake_TEST_FindPython3)
find_package (Python3 REQUIRED COMPONENTS Interpreter Development)
Python2_add_library (spam2 MODULE ../spam.c)
target_compile_definitions (spam2 PRIVATE PYTHON2)
if (NOT Python3_EXECUTABLE STREQUAL Python_EXECUTABLE)
message (FATAL_ERROR
"Python interpreters do not match:\n"
" Python_EXECUTABLE='${Python_EXECUTABLE}'\n"
" Python3_EXECUTABLE='${Python3_EXECUTABLE}'\n"
)
endif()
Python3_add_library (spam3 MODULE ../spam.c)
target_compile_definitions (spam3 PRIVATE PYTHON3)
Python3_add_library (spam3 MODULE ../spam.c)
target_compile_definitions (spam3 PRIVATE PYTHON3)
add_test (NAME python3_spam3
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:spam3>"
"${Python3_EXECUTABLE}" -c "import spam3; spam3.system(\"cd\")")
add_test (NAME python2_spam2
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:spam3>"
"${Python2_EXECUTABLE}" -c "import spam2; spam2.system(\"cd\")")
add_test (NAME python3_spam3
COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$<TARGET_FILE_DIR:spam3>"
"${Python3_EXECUTABLE}" -c "import spam3; spam3.system(\"cd\")")
endif()