diff --git a/CMakeLists.txt b/CMakeLists.txt index b6b271c8085..521dfdf4f02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -433,6 +433,8 @@ endif() option(WITH_GTESTS "Enable GTest unit testing" OFF) option(WITH_OPENGL_RENDER_TESTS "Enable OpenGL render related unit testing (Experimental)" OFF) option(WITH_OPENGL_DRAW_TESTS "Enable OpenGL UI drawing related unit testing (Experimental)" OFF) +set(TEST_PYTHON_EXE "" CACHE PATH "Python executable to run unit tests") +mark_as_advanced(TEST_PYTHON_EXE) # Documentation if(UNIX AND NOT APPLE) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 94b6e49181c..a3d4b2a501e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,15 +14,27 @@ endif() # Path to Blender and Python executables for all platforms. if(MSVC) set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender.exe) - set(TEST_PYTHON_EXE "${TEST_INSTALL_DIR}/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$:_d>") + set(_default_test_python_exe "${TEST_INSTALL_DIR}/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$:_d>") elseif(APPLE) set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/Blender.app/Contents/MacOS/Blender) - set(TEST_PYTHON_EXE) + set(_default_test_python_exe ${PYTHON_EXECUTABLE}) else() set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender) - set(TEST_PYTHON_EXE) + set(_default_test_python_exe ${PYTHON_EXECUTABLE}) endif() +# The installation directory's Python is the best one to use. However, it can only be there after the install step, +# which means that Python will never be there on a fresh system. To suit different needs, the user can pass +# -DTEST_PYTHON_EXE=/path/to/python to CMake. +if (NOT TEST_PYTHON_EXE) + set(TEST_PYTHON_EXE ${_default_test_python_exe}) + message(STATUS "Tests: Using Python executable: ${TEST_PYTHON_EXE}") +elseif(NOT EXISTS ${TEST_PYTHON_EXE}) + message(FATAL_ERROR "Tests: TEST_PYTHON_EXE ${TEST_PYTHON_EXE} does not exist") +endif() +unset(_default_test_python_exe) + + # For testing with Valgrind # set(TEST_BLENDER_EXE valgrind --track-origins=yes --error-limit=no ${TEST_BLENDER_EXE}) diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt index db5d5dcf73b..753bc7c5b91 100644 --- a/tests/python/CMakeLists.txt +++ b/tests/python/CMakeLists.txt @@ -48,18 +48,14 @@ endfunction() # Run Python script outside Blender. function(add_python_test testname testscript) - if(MSVC) - add_test( - NAME ${testname} - COMMAND ${TEST_PYTHON_EXE} ${testscript} ${ARGN} - ) - else() - add_test( - NAME ${testname} - COMMAND ${testscript} ${ARGN} - ) + if(NOT TEST_PYTHON_EXE) + message(FATAL_ERROR "No Python configured for running tests, set TEST_PYTHON_EXE.") endif() + add_test( + NAME ${testname} + COMMAND ${TEST_PYTHON_EXE} ${testscript} ${ARGN} + ) set_tests_properties(${testname} PROPERTIES ENVIRONMENT LSAN_OPTIONS=exitcode=0) endfunction() diff --git a/tests/python/alembic_tests.py b/tests/python/alembic_tests.py old mode 100755 new mode 100644 diff --git a/tests/python/cycles_render_tests.py b/tests/python/cycles_render_tests.py old mode 100755 new mode 100644 diff --git a/tests/python/eevee_render_tests.py b/tests/python/eevee_render_tests.py old mode 100755 new mode 100644 diff --git a/tests/python/ffmpeg_tests.py b/tests/python/ffmpeg_tests.py old mode 100755 new mode 100644 diff --git a/tests/python/opengl_draw_tests.py b/tests/python/opengl_draw_tests.py old mode 100755 new mode 100644 diff --git a/tests/python/workbench_render_tests.py b/tests/python/workbench_render_tests.py old mode 100755 new mode 100644