Python: fix failing tests when building bpy module
* Use Python executable from lib folder since it's not installed. * Make bpy module test work for portable install. * Disable gtests which don't work with different Python link flags and shared library locations. Ref D15957
This commit is contained in:
@@ -418,6 +418,13 @@ function(blender_add_test_lib
|
|||||||
library_deps
|
library_deps
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Not currently supported for Python module due to different required
|
||||||
|
# Python link flags.
|
||||||
|
if(WITH_PYTHON_MODULE)
|
||||||
|
add_custom_target(${name})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
add_cc_flags_custom_test(${name} PARENT_SCOPE)
|
add_cc_flags_custom_test(${name} PARENT_SCOPE)
|
||||||
|
|
||||||
# Otherwise external projects will produce warnings that we cannot fix.
|
# Otherwise external projects will produce warnings that we cannot fix.
|
||||||
@@ -464,6 +471,13 @@ function(blender_add_test_executable
|
|||||||
library_deps
|
library_deps
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Not currently supported for Python module due to different required
|
||||||
|
# Python link flags.
|
||||||
|
if(WITH_PYTHON_MODULE)
|
||||||
|
add_custom_target(${name})
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
add_cc_flags_custom_test(${name} PARENT_SCOPE)
|
add_cc_flags_custom_test(${name} PARENT_SCOPE)
|
||||||
|
|
||||||
## Otherwise external projects will produce warnings that we cannot fix.
|
## Otherwise external projects will produce warnings that we cannot fix.
|
||||||
|
|||||||
@@ -510,6 +510,8 @@ if(WITH_PYTHON)
|
|||||||
set(PYTHON_LIBRARY ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}.lib)
|
set(PYTHON_LIBRARY ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}.lib)
|
||||||
set(PYTHON_LIBRARY_DEBUG ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}_d.lib)
|
set(PYTHON_LIBRARY_DEBUG ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/libs/python${_PYTHON_VERSION_NO_DOTS}_d.lib)
|
||||||
|
|
||||||
|
set(PYTHON_EXECUTABLE ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/bin/python$<$<CONFIG:Debug>:_d>.exe)
|
||||||
|
|
||||||
set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/include)
|
set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/include)
|
||||||
set(PYTHON_NUMPY_INCLUDE_DIRS ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/lib/site-packages/numpy/core/include)
|
set(PYTHON_NUMPY_INCLUDE_DIRS ${LIBDIR}/python/${_PYTHON_VERSION_NO_DOTS}/lib/site-packages/numpy/core/include)
|
||||||
set(NUMPY_FOUND ON)
|
set(NUMPY_FOUND ON)
|
||||||
|
|||||||
@@ -10,29 +10,25 @@ set(TEST_INSTALL_DIR ${CMAKE_INSTALL_PREFIX_WITH_CONFIG})
|
|||||||
# Path to Blender and Python executables for all platforms.
|
# Path to Blender and Python executables for all platforms.
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender.exe)
|
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender.exe)
|
||||||
set(_default_test_python_exe "${TEST_INSTALL_DIR}/${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}/python/bin/python$<$<CONFIG:Debug>:_d>")
|
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/Blender.app/Contents/MacOS/Blender)
|
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/Blender.app/Contents/MacOS/Blender)
|
||||||
set(_default_test_python_exe ${PYTHON_EXECUTABLE})
|
|
||||||
else()
|
else()
|
||||||
if(WITH_INSTALL_PORTABLE)
|
if(WITH_INSTALL_PORTABLE)
|
||||||
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender)
|
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/blender)
|
||||||
else()
|
else()
|
||||||
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/bin/blender)
|
set(TEST_BLENDER_EXE ${TEST_INSTALL_DIR}/bin/blender)
|
||||||
endif()
|
endif()
|
||||||
set(_default_test_python_exe ${PYTHON_EXECUTABLE})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# The installation directory's Python is the best one to use. However, it can only be there after the install step,
|
# 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
|
# 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.
|
# -DTEST_PYTHON_EXE=/path/to/python to CMake.
|
||||||
if(NOT TEST_PYTHON_EXE)
|
if(NOT TEST_PYTHON_EXE)
|
||||||
set(TEST_PYTHON_EXE ${_default_test_python_exe})
|
set(TEST_PYTHON_EXE ${PYTHON_EXECUTABLE})
|
||||||
message(STATUS "Tests: Using Python executable: ${TEST_PYTHON_EXE}")
|
message(STATUS "Tests: Using Python executable: ${TEST_PYTHON_EXE}")
|
||||||
elseif(NOT EXISTS ${TEST_PYTHON_EXE})
|
elseif(NOT EXISTS ${TEST_PYTHON_EXE})
|
||||||
message(FATAL_ERROR "Tests: TEST_PYTHON_EXE ${TEST_PYTHON_EXE} does not exist")
|
message(FATAL_ERROR "Tests: TEST_PYTHON_EXE ${TEST_PYTHON_EXE} does not exist")
|
||||||
endif()
|
endif()
|
||||||
unset(_default_test_python_exe)
|
|
||||||
|
|
||||||
|
|
||||||
# For testing with Valgrind
|
# For testing with Valgrind
|
||||||
|
|||||||
@@ -12,4 +12,4 @@ function(add_blender_as_python_module_test testname testscript)
|
|||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
add_blender_as_python_module_test(import_bpy ${CMAKE_CURRENT_LIST_DIR}/import_bpy.py)
|
add_blender_as_python_module_test(import_bpy ${CMAKE_CURRENT_LIST_DIR}/import_bpy.py ${CMAKE_INSTALL_PREFIX_WITH_CONFIG})
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Add directory with module to the path.
|
||||||
|
import sys
|
||||||
|
sys.path.append(sys.argv[1])
|
||||||
|
|
||||||
# Just import bpy and see if there are any dynamic loader errors.
|
# Just import bpy and see if there are any dynamic loader errors.
|
||||||
import bpy
|
import bpy
|
||||||
|
|||||||
Reference in New Issue
Block a user