tests: cleanup and ci hardening (#2397)
* tests: refactor and cleanup
* refactor: more consistent
* tests: vendor six
* tests: more xfails, nicer system
* tests: simplify to info
* tests: suggestions from @YannickJadoul and @bstaletic
* tests: restore some pypy tests that now pass
* tests: rename info to env
* tests: strict False/True
* tests: drop explicit strict=True again
* tests: reduce minimum PyTest to 3.1
diff --git a/tests/test_eigen.py b/tests/test_eigen.py
index ae868da..ac68471 100644
--- a/tests/test_eigen.py
+++ b/tests/test_eigen.py
@@ -2,17 +2,15 @@
import pytest
from pybind11_tests import ConstructorStats
-pytestmark = pytest.requires_eigen_and_numpy
+np = pytest.importorskip("numpy")
+m = pytest.importorskip("pybind11_tests.eigen")
-with pytest.suppress(ImportError):
- from pybind11_tests import eigen as m
- import numpy as np
- ref = np.array([[ 0., 3, 0, 0, 0, 11],
- [22, 0, 0, 0, 17, 11],
- [ 7, 5, 0, 1, 0, 11],
- [ 0, 0, 0, 0, 0, 11],
- [ 0, 0, 14, 0, 8, 11]])
+ref = np.array([[ 0., 3, 0, 0, 0, 11],
+ [22, 0, 0, 0, 17, 11],
+ [ 7, 5, 0, 1, 0, 11],
+ [ 0, 0, 0, 0, 0, 11],
+ [ 0, 0, 14, 0, 8, 11]])
def assert_equal_ref(mat):
@@ -646,8 +644,8 @@
assert str(excinfo.value) == 'Nonconformable matrices!'
-@pytest.requires_eigen_and_scipy
def test_sparse():
+ pytest.importorskip("scipy")
assert_sparse_equal_ref(m.sparse_r())
assert_sparse_equal_ref(m.sparse_c())
assert_sparse_equal_ref(m.sparse_copy_r(m.sparse_r()))
@@ -656,8 +654,8 @@
assert_sparse_equal_ref(m.sparse_copy_c(m.sparse_r()))
-@pytest.requires_eigen_and_scipy
def test_sparse_signature(doc):
+ pytest.importorskip("scipy")
assert doc(m.sparse_copy_r) == """
sparse_copy_r(arg0: scipy.sparse.csr_matrix[numpy.float32]) -> scipy.sparse.csr_matrix[numpy.float32]
""" # noqa: E501 line too long