mirror of
https://github.com/pybind/pybind11.git
synced 2025-02-17 22:20:41 +00:00
tests: update pytest 6.2.1 and fix test_python_alreadyset_in_destructor (#2741)
* Update pytest to 6.2.1 in tests/requirements.txt * Pin pytest to last supported version for 3.5 * Suppress PytestUnraisableExceptionWarning and use sys.__unraisablehook__ instead of sys.unraisablehook * Fix filterwarnings mark on old pytest and old Python versions * Cleanup ignore_pytest_unraisable_warning decorator
This commit is contained in:
parent
6f66e7603c
commit
830f8eda87
@ -3,6 +3,7 @@ numpy==1.16.6; python_version<"3.6" and sys_platform!="win32"
|
|||||||
numpy==1.18.0; platform_python_implementation=="PyPy" and sys_platform=="darwin" and python_version>="3.6"
|
numpy==1.18.0; platform_python_implementation=="PyPy" and sys_platform=="darwin" and python_version>="3.6"
|
||||||
numpy==1.19.3; (platform_python_implementation!="PyPy" or sys_platform=="linux") and python_version>="3.6" and python_version<"3.10"
|
numpy==1.19.3; (platform_python_implementation!="PyPy" or sys_platform=="linux") and python_version>="3.6" and python_version<"3.10"
|
||||||
pytest==4.6.9; python_version<"3.5"
|
pytest==4.6.9; python_version<"3.5"
|
||||||
pytest==5.4.3; python_version>="3.5"
|
pytest==6.1.2; python_version=="3.5"
|
||||||
|
pytest==6.2.1; python_version>="3.6"
|
||||||
scipy==1.2.3; (platform_python_implementation!="PyPy" or sys_platform=="linux") and python_version<"3.6"
|
scipy==1.2.3; (platform_python_implementation!="PyPy" or sys_platform=="linux") and python_version<"3.6"
|
||||||
scipy==1.5.2; (platform_python_implementation!="PyPy" or sys_platform=="linux") and python_version>="3.6" and python_version<"3.9"
|
scipy==1.5.2; (platform_python_implementation!="PyPy" or sys_platform=="linux") and python_version>="3.6" and python_version<"3.9"
|
||||||
|
@ -50,13 +50,24 @@ def test_python_call_in_catch():
|
|||||||
assert d["good"] is True
|
assert d["good"] is True
|
||||||
|
|
||||||
|
|
||||||
|
def ignore_pytest_unraisable_warning(f):
|
||||||
|
unraisable = "PytestUnraisableExceptionWarning"
|
||||||
|
if hasattr(pytest, unraisable): # Python >= 3.8 and pytest >= 6
|
||||||
|
dec = pytest.mark.filterwarnings("ignore::pytest.{}".format(unraisable))
|
||||||
|
return dec(f)
|
||||||
|
else:
|
||||||
|
return f
|
||||||
|
|
||||||
|
|
||||||
|
@ignore_pytest_unraisable_warning
|
||||||
def test_python_alreadyset_in_destructor(monkeypatch, capsys):
|
def test_python_alreadyset_in_destructor(monkeypatch, capsys):
|
||||||
hooked = False
|
hooked = False
|
||||||
triggered = [False] # mutable, so Python 2.7 closure can modify it
|
triggered = [False] # mutable, so Python 2.7 closure can modify it
|
||||||
|
|
||||||
if hasattr(sys, "unraisablehook"): # Python 3.8+
|
if hasattr(sys, "unraisablehook"): # Python 3.8+
|
||||||
hooked = True
|
hooked = True
|
||||||
default_hook = sys.unraisablehook
|
# Don't take `sys.unraisablehook`, as that's overwritten by pytest
|
||||||
|
default_hook = sys.__unraisablehook__
|
||||||
|
|
||||||
def hook(unraisable_hook_args):
|
def hook(unraisable_hook_args):
|
||||||
exc_type, exc_value, exc_tb, err_msg, obj = unraisable_hook_args
|
exc_type, exc_value, exc_tb, err_msg, obj = unraisable_hook_args
|
||||||
|
Loading…
Reference in New Issue
Block a user