Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@blender.org>2020-04-10 11:35:17 +0300
committerSybren A. Stüvel <sybren@blender.org>2020-04-24 18:10:22 +0300
commitbe5c9d45bd5fb5d76734d4ff68e3be33f9f6f2cb (patch)
tree2314b468df6a6c2ab34952859f1232db4d50356d
parentbe009020827c99d898a2f816605a782491ddb7f0 (diff)
Tests: use explicit Python to run unit tests
CentOS on the buildbot still runs Python 3.6, which is also used for the unit tests. This means that the tests can't use language features that are available to Blender itself. And testing with a different version of Python than will be used by the actual code seems like a bad idea to me. This commit adds `TEST_PYTHON_EXECUTABLE` as advanced CMake option. This will allow us to set a specific Python executable when we need it. When not set, a platform-specific default will be used: - On Windows, the `python….exe` from the installation directory. This is just like before this patch, except that this patch adds the overridability. - On macOS/Linux, the `${PYTHON_EXECUTABLE}` as found by CMake. Every platform should now have a value (configured by the user or detected by CMake) for `TEST_PYTHON_EXE`, so there is no need to allow running without. This also removes the need to have some Python files marked as executable. If `TEST_PYTHON_EXE` is not user-configured, and thus the above default is used, a status message is logged by CMake. I've seen this a lot in other projects, and I like that it shows which values are auto-detected. However, it's not common in Blender, so if we want we can either remove it now, or remove it after the buildbot has been set up correctly. Differential Revision: https://developer.blender.org/D7395 Reviewed by: campbellbarton, mont29, sergey
-rw-r--r--CMakeLists.txt2
-rw-r--r--tests/CMakeLists.txt18
-rw-r--r--tests/python/CMakeLists.txt16
-rw-r--r--[-rwxr-xr-x]tests/python/alembic_tests.py0
-rw-r--r--[-rwxr-xr-x]tests/python/cycles_render_tests.py0
-rw-r--r--[-rwxr-xr-x]tests/python/eevee_render_tests.py0
-rw-r--r--[-rwxr-xr-x]tests/python/ffmpeg_tests.py0
-rw-r--r--[-rwxr-xr-x]tests/python/opengl_draw_tests.py0
-rw-r--r--[-rwxr-xr-x]tests/python/workbench_render_tests.py0
9 files changed, 23 insertions, 13 deletions
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$<$<CONFIG:Debug>:_d>")
+ set(_default_test_python_exe "${TEST_INSTALL_DIR}/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$<CONFIG:Debug>:_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
index 9de1bc06d84..9de1bc06d84 100755..100644
--- a/tests/python/alembic_tests.py
+++ b/tests/python/alembic_tests.py
diff --git a/tests/python/cycles_render_tests.py b/tests/python/cycles_render_tests.py
index 79ba11fdd44..79ba11fdd44 100755..100644
--- a/tests/python/cycles_render_tests.py
+++ b/tests/python/cycles_render_tests.py
diff --git a/tests/python/eevee_render_tests.py b/tests/python/eevee_render_tests.py
index a7130136d0a..a7130136d0a 100755..100644
--- a/tests/python/eevee_render_tests.py
+++ b/tests/python/eevee_render_tests.py
diff --git a/tests/python/ffmpeg_tests.py b/tests/python/ffmpeg_tests.py
index 92734b5bc7d..92734b5bc7d 100755..100644
--- a/tests/python/ffmpeg_tests.py
+++ b/tests/python/ffmpeg_tests.py
diff --git a/tests/python/opengl_draw_tests.py b/tests/python/opengl_draw_tests.py
index ab4df63afd9..ab4df63afd9 100755..100644
--- a/tests/python/opengl_draw_tests.py
+++ b/tests/python/opengl_draw_tests.py
diff --git a/tests/python/workbench_render_tests.py b/tests/python/workbench_render_tests.py
index 155b54098a8..155b54098a8 100755..100644
--- a/tests/python/workbench_render_tests.py
+++ b/tests/python/workbench_render_tests.py