diff --git a/AUTHORS b/AUTHORS index ce19f1f21ec..063593dd60e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -6,6 +6,7 @@ Contributors include:: Abdeali JK Abhijeet Kasurde Ahn Ki-Wook +Alexander Johnson Alexei Kozlenok Anatoly Bubenkoff Andreas Zeidler diff --git a/CHANGELOG.rst b/CHANGELOG.rst index cf3df9c876c..646f78133d7 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,9 @@ 3.0.7 (unreleased) ================== +* Change capture.py's DontReadFromInput class to throw io.UnsupportedOperation errors rather + than ValueErrors in the fileno method (`#2276`). + Thanks `@metasyn` for the PR. * Fix issue in assertion rewriting breaking due to modules silently discarding other modules when importing fails @@ -45,6 +48,7 @@ .. _@kkoukiou: https://github.com/KKoukiou .. _@omerhadari: https://github.com/omerhadari .. _@fbjorn: https://github.com/fbjorn +.. _@metasyn: https://github.com/metasyn .. _#2248: https://github.com/pytest-dev/pytest/issues/2248 .. _#2137: https://github.com/pytest-dev/pytest/issues/2137 @@ -53,6 +57,7 @@ .. _#2234: https://github.com/pytest-dev/pytest/issues/2234 .. _#2238: https://github.com/pytest-dev/pytest/issues/2238 .. _#2281: https://github.com/pytest-dev/pytest/issues/2281 +.. _#2276: https://github.com/pytest-dev/pytest/issues/2276 .. _PEP-479: https://www.python.org/dev/peps/pep-0479/ diff --git a/_pytest/capture.py b/_pytest/capture.py index eea81ca187d..07ec662b669 100644 --- a/_pytest/capture.py +++ b/_pytest/capture.py @@ -13,6 +13,7 @@ import pytest from py.io import TextIO +from io import UnsupportedOperation unicode = py.builtin.text patchsysdict = {0: 'stdin', 1: 'stdout', 2: 'stderr'} @@ -448,7 +449,7 @@ def read(self, *args): __iter__ = read def fileno(self): - raise ValueError("redirected Stdin is pseudofile, has no fileno()") + raise UnsupportedOperation("redirected Stdin is pseudofile, has no fileno()") def isatty(self): return False diff --git a/testing/test_capture.py b/testing/test_capture.py index 763e28315df..978e67b7e45 100644 --- a/testing/test_capture.py +++ b/testing/test_capture.py @@ -4,6 +4,7 @@ import pickle import os import sys +from io import UnsupportedOperation import _pytest._code import py @@ -658,7 +659,7 @@ def test_dontreadfrominput(): pytest.raises(IOError, f.read) pytest.raises(IOError, f.readlines) pytest.raises(IOError, iter, f) - pytest.raises(ValueError, f.fileno) + pytest.raises(UnsupportedOperation, f.fileno) f.close() # just for completeness