Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 5 additions & 10 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ set(PYBIND11_TEST_FILES
test_docstring_options
test_eigen_matrix
test_eigen_tensor
test_eigen_tensor_avoid_stl_array.cpp
test_enum
test_eval
test_exceptions
Expand Down Expand Up @@ -293,6 +292,11 @@ if(PYBIND11_TEST_FILES_EIGEN_I GREATER -1)
set(EIGEN3_VERSION ${EIGEN3_VERSION_STRING})
endif()
message(STATUS "Building tests with Eigen v${EIGEN3_VERSION}")

if(NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0))
tests_extra_targets("test_eigen_tensor.py" "eigen_tensor_avoid_stl_array")
endif()

else()
list(FIND PYBIND11_TEST_FILES test_eigen_matrix.cpp PYBIND11_TEST_FILES_EIGEN_I)
if(PYBIND11_TEST_FILES_EIGEN_I GREATER -1)
Expand All @@ -303,11 +307,6 @@ if(PYBIND11_TEST_FILES_EIGEN_I GREATER -1)
if(PYBIND11_TEST_FILES_EIGEN_I GREATER -1)
list(REMOVE_AT PYBIND11_TEST_FILES ${PYBIND11_TEST_FILES_EIGEN_I})
endif()
list(FIND PYBIND11_TEST_FILES test_eigen_tensor_avoid_stl_array.cpp
PYBIND11_TEST_FILES_EIGEN_I)
if(PYBIND11_TEST_FILES_EIGEN_I GREATER -1)
list(REMOVE_AT PYBIND11_TEST_FILES ${PYBIND11_TEST_FILES_EIGEN_I})
endif()
message(
STATUS "Building tests WITHOUT Eigen, use -DDOWNLOAD_EIGEN=ON on CMake 3.11+ to download")
endif()
Expand All @@ -319,10 +318,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_L
if(PYBIND11_TEST_FILES_EIGEN_I GREATER -1)
list(REMOVE_AT PYBIND11_TEST_FILES ${PYBIND11_TEST_FILES_EIGEN_I})
endif()
list(FIND PYBIND11_TEST_FILES test_eigen_tensor_avoid_stl_array.cpp PYBIND11_TEST_FILES_EIGEN_I)
if(PYBIND11_TEST_FILES_EIGEN_I GREATER -1)
list(REMOVE_AT PYBIND11_TEST_FILES ${PYBIND11_TEST_FILES_EIGEN_I})
endif()
endif()

# Optional dependency for some tests (boost::variant is only supported with version >= 1.56)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,10 @@
BSD-style license that can be found in the LICENSE file.
*/

constexpr const char *test_eigen_tensor_module_name = "eigen_tensor_avoid_stl_array";

#ifndef EIGEN_AVOID_STL_ARRAY
# define EIGEN_AVOID_STL_ARRAY
#endif

#define PYBIND11_TEST_EIGEN_TENSOR_NAMESPACE eigen_tensor_avoid_stl_array

#include "test_eigen_tensor.inl"

PYBIND11_MODULE(eigen_tensor_avoid_stl_array, m) { eigen_tensor_test::test_module(m); }
6 changes: 4 additions & 2 deletions tests/test_eigen_tensor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
BSD-style license that can be found in the LICENSE file.
*/

constexpr const char *test_eigen_tensor_module_name = "eigen_tensor";

#define PYBIND11_TEST_EIGEN_TENSOR_NAMESPACE eigen_tensor

#ifdef EIGEN_AVOID_STL_ARRAY
# undef EIGEN_AVOID_STL_ARRAY
#endif

#include "test_eigen_tensor.inl"

#include "pybind11_tests.h"

test_initializer egien_tensor("eigen_tensor", eigen_tensor_test::test_module);
10 changes: 4 additions & 6 deletions tests/test_eigen_tensor.inl
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

#include <pybind11/eigen/tensor.h>

#include "pybind11_tests.h"
PYBIND11_NAMESPACE_BEGIN(eigen_tensor_test)

PYBIND11_NAMESPACE_BEGIN(PYBIND11_TEST_EIGEN_TENSOR_NAMESPACE)
namespace py = pybind11;

PYBIND11_WARNING_DISABLE_MSVC(4127)

Expand Down Expand Up @@ -108,7 +108,7 @@ void init_tensor_module(pybind11::module &m) {
return check_tensor(get_tensor<Options>()) && check_tensor(get_fixed_tensor<Options>());
});

py::class_<CustomExample<Options>>(m, "CustomExample")
py::class_<CustomExample<Options>>(m, "CustomExample", py::module_local())
.def(py::init<>())
.def_readonly(
"member", &CustomExample<Options>::member, py::return_value_policy::reference_internal)
Expand Down Expand Up @@ -322,8 +322,6 @@ void init_tensor_module(pybind11::module &m) {
py::return_value_policy::reference);
}

void test_module(py::module_ &);
test_initializer name(test_eigen_tensor_module_name, test_module);
void test_module(py::module_ &m) {
auto f_style = m.def_submodule("f_style");
auto c_style = m.def_submodule("c_style");
Expand All @@ -332,4 +330,4 @@ void test_module(py::module_ &m) {
init_tensor_module<Eigen::RowMajor>(c_style);
}

PYBIND11_NAMESPACE_END(PYBIND11_TEST_EIGEN_TENSOR_NAMESPACE)
PYBIND11_NAMESPACE_END(eigen_tensor_test)
8 changes: 4 additions & 4 deletions tests/test_eigen_tensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
eigen_tensor = pytest.importorskip("pybind11_tests.eigen_tensor")
submodules = [eigen_tensor.c_style, eigen_tensor.f_style]
try:
from pybind11_tests import eigen_tensor_avoid_stl_array as avoid
import eigen_tensor_avoid_stl_array as avoid

submodules += [avoid.c_style, avoid.f_style]
except ImportError as e:
# Ensure config, build, toolchain, etc. issues are not masked here:
raise RuntimeError(
"import pybind11_tests.eigen_tensor_avoid_stl_array FAILED, while "
"import eigen_tensor_avoid_stl_array FAILED, while "
"import pybind11_tests.eigen_tensor succeeded. "
"Please ensure that "
"test_eigen_tensor.cpp & "
"test_eigen_tensor_avoid_stl_array.cpp "
"eigen_tensor_avoid_stl_array.cpp "
"are built together (or both are not built if Eigen is not available)."
) from e

Expand All @@ -42,7 +42,7 @@ def cleanup():


def test_import_avoid_stl_array():
pytest.importorskip("pybind11_tests.eigen_tensor_avoid_stl_array")
pytest.importorskip("eigen_tensor_avoid_stl_array")
assert len(submodules) == 4


Expand Down