aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wpt/web-platform-tests/tools/pytest/testing/test_recwarn.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wpt/web-platform-tests/tools/pytest/testing/test_recwarn.py')
-rw-r--r--tests/wpt/web-platform-tests/tools/pytest/testing/test_recwarn.py227
1 files changed, 0 insertions, 227 deletions
diff --git a/tests/wpt/web-platform-tests/tools/pytest/testing/test_recwarn.py b/tests/wpt/web-platform-tests/tools/pytest/testing/test_recwarn.py
deleted file mode 100644
index 87e5846c2b0..00000000000
--- a/tests/wpt/web-platform-tests/tools/pytest/testing/test_recwarn.py
+++ /dev/null
@@ -1,227 +0,0 @@
-import warnings
-import py
-import pytest
-from _pytest.recwarn import WarningsRecorder
-
-
-def test_recwarn_functional(testdir):
- reprec = testdir.inline_runsource("""
- import warnings
- oldwarn = warnings.showwarning
- def test_method(recwarn):
- assert warnings.showwarning != oldwarn
- warnings.warn("hello")
- warn = recwarn.pop()
- assert isinstance(warn.message, UserWarning)
- def test_finalized():
- assert warnings.showwarning == oldwarn
- """)
- res = reprec.countoutcomes()
- assert tuple(res) == (2, 0, 0), res
-
-
-class TestWarningsRecorderChecker(object):
- def test_recording(self, recwarn):
- showwarning = py.std.warnings.showwarning
- rec = WarningsRecorder()
- with rec:
- assert py.std.warnings.showwarning != showwarning
- assert not rec.list
- py.std.warnings.warn_explicit("hello", UserWarning, "xyz", 13)
- assert len(rec.list) == 1
- py.std.warnings.warn(DeprecationWarning("hello"))
- assert len(rec.list) == 2
- warn = rec.pop()
- assert str(warn.message) == "hello"
- l = rec.list
- rec.clear()
- assert len(rec.list) == 0
- assert l is rec.list
- pytest.raises(AssertionError, "rec.pop()")
-
- assert showwarning == py.std.warnings.showwarning
-
- def test_typechecking(self):
- from _pytest.recwarn import WarningsChecker
- with pytest.raises(TypeError):
- WarningsChecker(5)
- with pytest.raises(TypeError):
- WarningsChecker(('hi', RuntimeWarning))
- with pytest.raises(TypeError):
- WarningsChecker([DeprecationWarning, RuntimeWarning])
-
- def test_invalid_enter_exit(self):
- # wrap this test in WarningsRecorder to ensure warning state gets reset
- with WarningsRecorder():
- with pytest.raises(RuntimeError):
- rec = WarningsRecorder()
- rec.__exit__(None, None, None) # can't exit before entering
-
- with pytest.raises(RuntimeError):
- rec = WarningsRecorder()
- with rec:
- with rec:
- pass # can't enter twice
-
-
-class TestDeprecatedCall(object):
- """test pytest.deprecated_call()"""
-
- def dep(self, i, j=None):
- if i == 0:
- py.std.warnings.warn("is deprecated", DeprecationWarning,
- stacklevel=1)
- return 42
-
- def dep_explicit(self, i):
- if i == 0:
- py.std.warnings.warn_explicit("dep_explicit", category=DeprecationWarning,
- filename="hello", lineno=3)
-
- def test_deprecated_call_raises(self):
- with pytest.raises(AssertionError) as excinfo:
- pytest.deprecated_call(self.dep, 3, 5)
- assert str(excinfo).find("did not produce") != -1
-
- def test_deprecated_call(self):
- pytest.deprecated_call(self.dep, 0, 5)
-
- def test_deprecated_call_ret(self):
- ret = pytest.deprecated_call(self.dep, 0)
- assert ret == 42
-
- def test_deprecated_call_preserves(self):
- onceregistry = py.std.warnings.onceregistry.copy()
- filters = py.std.warnings.filters[:]
- warn = py.std.warnings.warn
- warn_explicit = py.std.warnings.warn_explicit
- self.test_deprecated_call_raises()
- self.test_deprecated_call()
- assert onceregistry == py.std.warnings.onceregistry
- assert filters == py.std.warnings.filters
- assert warn is py.std.warnings.warn
- assert warn_explicit is py.std.warnings.warn_explicit
-
- def test_deprecated_explicit_call_raises(self):
- with pytest.raises(AssertionError):
- pytest.deprecated_call(self.dep_explicit, 3)
-
- def test_deprecated_explicit_call(self):
- pytest.deprecated_call(self.dep_explicit, 0)
- pytest.deprecated_call(self.dep_explicit, 0)
-
- def test_deprecated_call_as_context_manager_no_warning(self):
- with pytest.raises(pytest.fail.Exception) as ex:
- with pytest.deprecated_call():
- self.dep(1)
- assert str(ex.value) == "DID NOT WARN"
-
- def test_deprecated_call_as_context_manager(self):
- with pytest.deprecated_call():
- self.dep(0)
-
- def test_deprecated_call_pending(self):
- def f():
- py.std.warnings.warn(PendingDeprecationWarning("hi"))
- pytest.deprecated_call(f)
-
- def test_deprecated_call_specificity(self):
- other_warnings = [Warning, UserWarning, SyntaxWarning, RuntimeWarning,
- FutureWarning, ImportWarning, UnicodeWarning]
- for warning in other_warnings:
- def f():
- py.std.warnings.warn(warning("hi"))
- with pytest.raises(AssertionError):
- pytest.deprecated_call(f)
-
- def test_deprecated_function_already_called(self, testdir):
- """deprecated_call should be able to catch a call to a deprecated
- function even if that function has already been called in the same
- module. See #1190.
- """
- testdir.makepyfile("""
- import warnings
- import pytest
-
- def deprecated_function():
- warnings.warn("deprecated", DeprecationWarning)
-
- def test_one():
- deprecated_function()
-
- def test_two():
- pytest.deprecated_call(deprecated_function)
- """)
- result = testdir.runpytest()
- result.stdout.fnmatch_lines('*=== 2 passed in *===')
-
-
-class TestWarns(object):
- def test_strings(self):
- # different messages, b/c Python suppresses multiple identical warnings
- source1 = "warnings.warn('w1', RuntimeWarning)"
- source2 = "warnings.warn('w2', RuntimeWarning)"
- source3 = "warnings.warn('w3', RuntimeWarning)"
- pytest.warns(RuntimeWarning, source1)
- pytest.raises(pytest.fail.Exception,
- lambda: pytest.warns(UserWarning, source2))
- pytest.warns(RuntimeWarning, source3)
-
- def test_function(self):
- pytest.warns(SyntaxWarning,
- lambda msg: warnings.warn(msg, SyntaxWarning), "syntax")
-
- def test_warning_tuple(self):
- pytest.warns((RuntimeWarning, SyntaxWarning),
- lambda: warnings.warn('w1', RuntimeWarning))
- pytest.warns((RuntimeWarning, SyntaxWarning),
- lambda: warnings.warn('w2', SyntaxWarning))
- pytest.raises(pytest.fail.Exception,
- lambda: pytest.warns(
- (RuntimeWarning, SyntaxWarning),
- lambda: warnings.warn('w3', UserWarning)))
-
- def test_as_contextmanager(self):
- with pytest.warns(RuntimeWarning):
- warnings.warn("runtime", RuntimeWarning)
-
- with pytest.raises(pytest.fail.Exception):
- with pytest.warns(RuntimeWarning):
- warnings.warn("user", UserWarning)
-
- with pytest.raises(pytest.fail.Exception):
- with pytest.warns(UserWarning):
- warnings.warn("runtime", RuntimeWarning)
-
- with pytest.warns(UserWarning):
- warnings.warn("user", UserWarning)
-
- def test_record(self):
- with pytest.warns(UserWarning) as record:
- warnings.warn("user", UserWarning)
-
- assert len(record) == 1
- assert str(record[0].message) == "user"
-
- def test_record_only(self):
- with pytest.warns(None) as record:
- warnings.warn("user", UserWarning)
- warnings.warn("runtime", RuntimeWarning)
-
- assert len(record) == 2
- assert str(record[0].message) == "user"
- assert str(record[1].message) == "runtime"
-
- def test_double_test(self, testdir):
- """If a test is run again, the warning should still be raised"""
- testdir.makepyfile('''
- import pytest
- import warnings
-
- @pytest.mark.parametrize('run', [1, 2])
- def test(run):
- with pytest.warns(RuntimeWarning):
- warnings.warn("runtime", RuntimeWarning)
- ''')
- result = testdir.runpytest()
- result.stdout.fnmatch_lines(['*2 passed in*'])