Backport of https://github.com/pytest-dev/py/commit/3305183b964bded36f9cd43976d22524f6ae15b2 --- a/testing/code/test_assertion.py +++ b/testing/code/test_assertion.py @@ -141,7 +141,10 @@ def test_assert_implicit_multiline(): e = exvalue() assert str(e).find('assert [1, 2, 3] !=') != -1 - +@py.test.mark.xfail(py.test.__version__[0] != "2", + reason="broken on modern pytest", + run=False +) def test_assert_with_brokenrepr_arg(): class BrokenRepr: def __repr__(self): 0 / 0 @@ -278,7 +281,10 @@ def test_assert_raise_alias(testdir): ]) -@pytest.mark.skipif("sys.version_info < (2,5)") +@py.test.mark.xfail(py.test.__version__[0] != "2", + reason="broken on modern pytest", + run=False) +@py.test.mark.skipif("sys.version_info < (2,5)") def test_assert_raise_subclass(): class SomeEx(AssertionError): def __init__(self, *args): --- a/testing/code/test_excinfo.py +++ b/testing/code/test_excinfo.py @@ -16,6 +16,13 @@ else: import pytest pytest_version_info = tuple(map(int, pytest.__version__.split(".")[:3])) + +broken_on_modern_pytest = pytest.mark.xfail( + pytest_version_info[0] != 2, + reason="this test hasn't been fixed after moving py.code into pytest", + run=False + ) + class TWMock: def __init__(self): @@ -355,6 +362,7 @@ class TestFormattedExcinfo: assert lines[0] == "| def f(x):" assert lines[1] == " pass" + @broken_on_modern_pytest def test_repr_source_excinfo(self): """ check if indentation is right """ pr = FormattedExcinfo() @@ -657,6 +665,7 @@ raise ValueError() assert p._makepath(__file__) == __file__ reprtb = p.repr_traceback(excinfo) + @broken_on_modern_pytest def test_repr_excinfo_addouterr(self, importasmod): mod = importasmod(""" def entry(): @@ -699,6 +708,7 @@ raise ValueError() assert reprtb.extraline == "!!! Recursion detected (same locals & position)" assert str(reprtb) + @broken_on_modern_pytest def test_tb_entry_AssertionError(self, importasmod): # probably this test is a bit redundant # as py/magic/testing/test_assertion.py @@ -742,6 +752,7 @@ raise ValueError() x = py.builtin._totext(MyRepr()) assert x == py.builtin._totext("я", "utf-8") + @broken_on_modern_pytest def test_toterminal_long(self, importasmod): mod = importasmod(""" def g(x): @@ -768,6 +779,7 @@ raise ValueError() assert tw.lines[9] == "" assert tw.lines[10].endswith("mod.py:3: ValueError") + @broken_on_modern_pytest def test_toterminal_long_missing_source(self, importasmod, tmpdir): mod = importasmod(""" def g(x): @@ -793,6 +805,7 @@ raise ValueError() assert tw.lines[7] == "" assert tw.lines[8].endswith("mod.py:3: ValueError") + @broken_on_modern_pytest def test_toterminal_long_incomplete_source(self, importasmod, tmpdir): mod = importasmod(""" def g(x): @@ -818,6 +831,7 @@ raise ValueError() assert tw.lines[7] == "" assert tw.lines[8].endswith("mod.py:3: ValueError") + @broken_on_modern_pytest def test_toterminal_long_filenames(self, importasmod): mod = importasmod(""" def f(): @@ -863,6 +877,7 @@ raise ValueError() assert tw.stringio.getvalue() + @broken_on_modern_pytest def test_native_style(self): excinfo = self.excinfo_from_exec(""" assert 0 @@ -877,6 +892,7 @@ raise ValueError() if py.std.sys.version_info >= (2, 5): assert s.count('assert 0') == 2 + @broken_on_modern_pytest def test_traceback_repr_style(self, importasmod): mod = importasmod(""" def f():