pytest fails to build with Python 3.10.0a1. =================================== FAILURES =================================== _____________ TestExecutionNonForked.test_exact_teardown_issue1206 _____________ self = <test_runner.TestExecutionNonForked object at 0x7f12f023b760> testdir = <Testdir local('/tmp/pytest-of-mockbuild/pytest-0/test_exact_teardown_issue12060')> def test_exact_teardown_issue1206(self, testdir) -> None: """issue shadowing error with wrong number of arguments on teardown_method.""" rec = testdir.inline_runsource( """ import pytest class TestClass(object): def teardown_method(self, x, y, z): pass def test_method(self): assert True """ ) reps = rec.getreports("pytest_runtest_logreport") print(reps) assert len(reps) == 3 # assert reps[0].nodeid.endswith("test_method") assert reps[0].passed assert reps[0].when == "setup" # assert reps[1].nodeid.endswith("test_method") assert reps[1].passed assert reps[1].when == "call" # assert reps[2].nodeid.endswith("test_method") assert reps[2].failed assert reps[2].when == "teardown" > assert reps[2].longrepr.reprcrash.message in ( # python3 error "TypeError: teardown_method() missing 2 required positional arguments: 'y' and 'z'", # python2 error "TypeError: teardown_method() takes exactly 4 arguments (2 given)", ) E assert "TypeError: TestClass.teardown_method() missing 2 required positional arguments: 'y' and 'z'" in ("TypeError: teardown_method() missing 2 required positional arguments: 'y' and 'z'", 'TypeError: teardown_method() takes exactly 4 arguments (2 given)') E + where "TypeError: TestClass.teardown_method() missing 2 required positional arguments: 'y' and 'z'" = ReprFileLocation(path='/builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/p...py', lineno=674, message="TypeError: TestClass.teardown_method() missing 2 required positional arguments: 'y' and 'z'").message E + where ReprFileLocation(path='/builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/p...py', lineno=674, message="TypeError: TestClass.teardown_method() missing 2 required positional arguments: 'y' and 'z'") = ExceptionChainRepr(chain=[(ReprTraceback(reprentries=[ReprEntry(lines=[' @classmethod', ' def from_call(', ' ...no=674, message="TypeError: TestClass.teardown_method() missing 2 required positional arguments: 'y' and 'z'"), None)]).reprcrash E + where ExceptionChainRepr(chain=[(ReprTraceback(reprentries=[ReprEntry(lines=[' @classmethod', ' def from_call(', ' ...no=674, message="TypeError: TestClass.teardown_method() missing 2 required positional arguments: 'y' and 'z'"), None)]) = <TestReport 'test_exact_teardown_issue1206.py::TestClass::test_method' when='teardown' outcome='failed'>.longrepr /builddir/build/BUILD/pytest-6.0.2/testing/test_runner.py:341: AssertionError ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.10.0a1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1 rootdir: /tmp/pytest-of-mockbuild/pytest-0/test_exact_teardown_issue12060 collected 1 item test_exact_teardown_issue1206.py .E [100%] ==================================== ERRORS ==================================== __________________ ERROR at teardown of TestClass.test_method __________________ cls = <class '_pytest.runner.CallInfo'> func = <function call_runtest_hook.<locals>.<lambda> at 0x7f12f0205dc0> when = 'teardown' reraise = (<class '_pytest.outcomes.Exit'>, <class 'KeyboardInterrupt'>) @classmethod def from_call( cls, func: "Callable[[], _T]", when: "Literal['collect', 'setup', 'call', 'teardown']", reraise: "Optional[Union[Type[BaseException], Tuple[Type[BaseException], ...]]]" = None, ) -> "CallInfo[_T]": excinfo = None start = timing.time() precise_start = timing.perf_counter() try: > result = func() # type: Optional[_T] /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:294: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:247: in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise /usr/lib/python3.10/site-packages/pluggy/hooks.py:286: in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) /usr/lib/python3.10/site-packages/pluggy/manager.py:93: in _hookexec return self._inner_hookexec(hook, methods, kwargs) /usr/lib/python3.10/site-packages/pluggy/manager.py:337: in traced_hookexec return outcome.get_result() /usr/lib/python3.10/site-packages/pluggy/manager.py:335: in <lambda> outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs)) /usr/lib/python3.10/site-packages/pluggy/manager.py:84: in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:166: in pytest_runtest_teardown item.session._setupstate.teardown_exact(item, nextitem) /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:402: in teardown_exact self._teardown_towards(needed_collectors) /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:417: in _teardown_towards raise exc /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:410: in _teardown_towards self._pop_and_teardown() /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:370: in _pop_and_teardown self._teardown_with_finalization(colitem) /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:388: in _teardown_with_finalization self._callfinalizers(colitem) /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:385: in _callfinalizers raise exc /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/runner.py:378: in _callfinalizers fin() /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/fixtures.py:1023: in finish raise exc /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/fixtures.py:1016: in finish func() /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/fixtures.py:932: in _teardown_yield_fixture next(it) /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/python.py:774: in xunit_setup_method_fixture _call_with_optional_argument(func, method) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ func = <bound method TestClass.teardown_method of <test_exact_teardown_issue1206.TestClass object at 0x7f12f02271f0>> arg = <bound method TestClass.test_method of <test_exact_teardown_issue1206.TestClass object at 0x7f12f02271f0>> def _call_with_optional_argument(func, arg) -> None: """Call the given function with the given argument if func accepts one argument, otherwise calls func without arguments""" arg_count = func.__code__.co_argcount if inspect.ismethod(func): arg_count -= 1 if arg_count: > func(arg) E TypeError: TestClass.teardown_method() missing 2 required positional arguments: 'y' and 'z' /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/python.py:674: TypeError =========================== short test summary info ============================ ERROR test_exact_teardown_issue1206.py::TestClass::test_method - TypeError: T... ========================== 1 passed, 1 error in 0.15s ========================== [<TestReport 'test_exact_teardown_issue1206.py::TestClass::test_method' when='setup' outcome='passed'>, <TestReport 'test_exact_teardown_issue1206.py::TestClass::test_method' when='call' outcome='passed'>, <TestReport 'test_exact_teardown_issue1206.py::TestClass::test_method' when='teardown' outcome='failed'>] =============================== warnings summary =============================== testing/acceptance_test.py: 2 warnings testing/deprecated_test.py: 1 warning testing/test_assertion.py: 2 warnings testing/test_cacheprovider.py: 1 warning testing/test_junitxml.py: 3 warnings testing/test_pluginmanager.py: 1 warning testing/test_terminal.py: 3 warnings testing/test_warnings.py: 11 warnings testing/python/collect.py: 2 warnings /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/compat.py:340: PytestDeprecationWarning: The TerminalReporter.writer attribute is deprecated, use TerminalReporter._tw instead at your own risk. See https://docs.pytest.org/en/stable/deprecations.html#terminalreporter-writer for more information. return getattr(object, name, default) -- Docs: https://docs.pytest.org/en/stable/warnings.html =========================== short test summary info ============================ FAILED testing/test_runner.py::TestExecutionNonForked::test_exact_teardown_issue1206 = 1 failed, 2952 passed, 26 skipped, 9 xfailed, 26 warnings in 183.69s (0:03:03) = error: Bad exit status from /var/tmp/rpm-tmp.JLvmkv (%check) bogus date in %changelog: Mon Jul 28 2020 Miro HronÄok <mhroncok> - 6.0.0~rc1-1 Bad exit status from /var/tmp/rpm-tmp.JLvmkv (%check) For the build logs, see: https://copr-be.cloud.fedoraproject.org/results/@python/python3.10/fedora-rawhide-x86_64/01726314-pytest/ For all our attempts to build pytest with Python 3.10, see: https://copr.fedorainfracloud.org/coprs/g/python/python3.10/package/pytest/ Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.10: https://copr.fedorainfracloud.org/coprs/g/python/python3.10/ Let us know here if you have any questions. Python 3.10 will be included in Fedora 35. To make that update smoother, we're building Fedora packages with early pre-releases of Python 3.10. A build failure prevents us from testing all dependent packages (transitive [Build]Requires), so if this package is required a lot, it's important for us to get it fixed soon. We'd appreciate help from the people who know this package best, but if you don't want to work on this now, let us know so we can try to work around it on our side.
Seems like a exception message difference only. Might be fixed upstream in newer versions, I will check/report/fix.
Seems to be fixed in https://github.com/pytest-dev/pytest/commit/d9ac2efbcdee123f73edf1829c8bd6a91be3b6d2 (not yet released)
Backporting the patch, also to pytest4.
Fedora backport for pytest 6: https://src.fedoraproject.org/rpms/pytest/pull-request/18 Upstream backport for pytest 4: https://github.com/pytest-dev/pytest/pull/8054 Fedora backport for pytest 4: https://src.fedoraproject.org/rpms/python-pytest4/pull-request/2
There is a new failure now: =================================== FAILURES =================================== _____________________________ test_syspath_prepend _____________________________ mp = <_pytest.monkeypatch.MonkeyPatch object at 0x7f2164af4bb0> def test_syspath_prepend(mp: MonkeyPatch) -> None: old = list(sys.path) > mp.syspath_prepend("world") testing/test_monkeypatch.py:252: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/monkeypatch.py:300: in syspath_prepend from pkg_resources import fixup_namespace_packages /usr/lib/python3.10/site-packages/pkg_resources/__init__.py:73: in <module> from pkg_resources.extern import appdirs <frozen importlib._bootstrap>:1026: in _find_and_load ??? <frozen importlib._bootstrap>:1005: in _find_and_load_unlocked ??? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ spec = ModuleSpec(name='pkg_resources.extern.appdirs', loader=<pkg_resources.extern.VendorImporter object at 0x7f2164a68d60>) > ??? E ImportWarning: VendorImporter.exec_module() not found; falling back to load_module() <frozen importlib._bootstrap>:681: ImportWarning _______________________ test_syspath_prepend_double_undo _______________________ mp = <_pytest.monkeypatch.MonkeyPatch object at 0x7f2164a31040> def test_syspath_prepend_double_undo(mp: MonkeyPatch) -> None: old_syspath = sys.path[:] try: > mp.syspath_prepend("hello world") testing/test_monkeypatch.py:265: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/monkeypatch.py:300: in syspath_prepend from pkg_resources import fixup_namespace_packages /usr/lib/python3.10/site-packages/pkg_resources/__init__.py:73: in <module> from pkg_resources.extern import appdirs <frozen importlib._bootstrap>:1026: in _find_and_load ??? <frozen importlib._bootstrap>:1005: in _find_and_load_unlocked ??? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ spec = ModuleSpec(name='pkg_resources.extern.appdirs', loader=<pkg_resources.extern.VendorImporter object at 0x7f2164a68d60>) > ??? E ImportWarning: VendorImporter.exec_module() not found; falling back to load_module() <frozen importlib._bootstrap>:681: ImportWarning ______________________ test_excinfo_no_python_sourcecode _______________________ tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/test_excinfo_no_python_sourcec0') def test_excinfo_no_python_sourcecode(tmpdir): # XXX: simplified locally testable version tmpdir.join("test.txt").write("{{ h()}}:") jinja2 = pytest.importorskip("jinja2") loader = jinja2.FileSystemLoader(str(tmpdir)) env = jinja2.Environment(loader=loader) template = env.get_template("test.txt") excinfo = pytest.raises(ValueError, template.render, h=h) for item in excinfo.traceback: print(item) # XXX: for some reason jinja.Template.render is printed in full item.source # shouldn't fail if isinstance(item.path, py.path.local) and item.path.basename == "test.txt": > assert str(item.source) == "{{ h()}}:" E AssertionError: assert '' == '{{ h()}}:' E - {{ h()}}: testing/code/test_excinfo.py:382: AssertionError ----------------------------- Captured stdout call ----------------------------- File '/builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/python_api.py':706 in raises func(*args[1:], **kwargs) File '/usr/lib/python3.10/site-packages/jinja2/environment.py':1090 in render self.environment.handle_exception() File '/usr/lib/python3.10/site-packages/jinja2/environment.py':832 in handle_exception reraise(*rewrite_traceback_stack(source=source)) File '/usr/lib/python3.10/site-packages/jinja2/_compat.py':28 in reraise raise value.with_traceback(tb) File '/tmp/pytest-of-mockbuild/pytest-0/test_excinfo_no_python_sourcec0/test.txt':-4 in top-level template code ??? _________ TestInvocationVariants.test_cmdline_python_namespace_package _________ self = <acceptance_test.TestInvocationVariants object at 0x7f214e9e9850> testdir = <Testdir local('/tmp/pytest-of-mockbuild/pytest-0/test_cmdline_python_namespace_package0')> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f214ea007f0> def test_cmdline_python_namespace_package(self, testdir, monkeypatch): """ test --pyargs option with namespace packages (#1567) Ref: https://packaging.python.org/guides/packaging-namespace-packages/ """ monkeypatch.delenv("PYTHONDONTWRITEBYTECODE", raising=False) search_path = [] for dirname in "hello", "world": d = testdir.mkdir(dirname) search_path.append(d) ns = d.mkdir("ns_pkg") ns.join("__init__.py").write( "__import__('pkg_resources').declare_namespace(__name__)" ) lib = ns.mkdir(dirname) lib.ensure("__init__.py") lib.join("test_{}.py".format(dirname)).write( "def test_{}(): pass\ndef test_other():pass".format(dirname) ) # The structure of the test directory is now: # . # ├── hello # │ └── ns_pkg # │ ├── __init__.py # │ └── hello # │ ├── __init__.py # │ └── test_hello.py # └── world # └── ns_pkg # ├── __init__.py # └── world # ├── __init__.py # └── test_world.py # NOTE: the different/reversed ordering is intentional here. monkeypatch.setenv("PYTHONPATH", prepend_pythonpath(*search_path)) for p in search_path: monkeypatch.syspath_prepend(p) # mixed module and filenames: monkeypatch.chdir("world") result = testdir.runpytest("--pyargs", "-v", "ns_pkg.hello", "ns_pkg/world") assert result.ret == 0 > result.stdout.fnmatch_lines( [ "test_hello.py::test_hello*PASSED*", "test_hello.py::test_other*PASSED*", "ns_pkg/world/test_world.py::test_world*PASSED*", "ns_pkg/world/test_world.py::test_other*PASSED*", "*4 passed in*", ] ) E Failed: nomatch: 'test_hello.py::test_hello*PASSED*' E and: '============================= test session starts ==============================' E and: 'platform linux -- Python 3.10.0a3, pytest-6.0.2, py-1.9.0, pluggy-0.13.1 -- /usr/bin/python3' E and: 'cachedir: .pytest_cache' E and: 'rootdir: /tmp/pytest-of-mockbuild/pytest-0/test_cmdline_python_namespace_package0/world' E and: 'collecting ... collected 4 items' E and: '' E fnmatch: 'test_hello.py::test_hello*PASSED*' E with: 'test_hello.py::test_hello PASSED [ 25%]' E fnmatch: 'test_hello.py::test_other*PASSED*' E with: 'test_hello.py::test_other PASSED [ 50%]' E fnmatch: 'ns_pkg/world/test_world.py::test_world*PASSED*' E with: 'ns_pkg/world/test_world.py::test_world PASSED [ 75%]' E fnmatch: 'ns_pkg/world/test_world.py::test_other*PASSED*' E with: 'ns_pkg/world/test_world.py::test_other PASSED [100%]' E nomatch: '*4 passed in*' E and: '' E and: '=============================== warnings summary ===============================' E and: '<frozen importlib._bootstrap>:283' E and: ' <frozen importlib._bootstrap>:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead' E and: '' E and: '-- Docs: https://docs.pytest.org/en/stable/warnings.html' E and: '========================= 4 passed, 1 warning in 0.02s =========================' E remains unmatched: '*4 passed in*' /builddir/build/BUILD/pytest-6.0.2/testing/acceptance_test.py:712: Failed ----------------------------- Captured stdout call ----------------------------- ============================= test session starts ============================== platform linux -- Python 3.10.0a3, pytest-6.0.2, py-1.9.0, pluggy-0.13.1 -- /usr/bin/python3 cachedir: .pytest_cache rootdir: /tmp/pytest-of-mockbuild/pytest-0/test_cmdline_python_namespace_package0/world collecting ... collected 4 items test_hello.py::test_hello PASSED [ 25%] test_hello.py::test_other PASSED [ 50%] ns_pkg/world/test_world.py::test_world PASSED [ 75%] ns_pkg/world/test_world.py::test_other PASSED [100%] =============================== warnings summary =============================== <frozen importlib._bootstrap>:283 <frozen importlib._bootstrap>:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead -- Docs: https://docs.pytest.org/en/stable/warnings.html ========================= 4 passed, 1 warning in 0.02s ========================= _________________ test_syspath_prepend_with_namespace_packages _________________ testdir = <Testdir local('/tmp/pytest-of-mockbuild/pytest-0/test_syspath_prepend_with_namespace_packages0')> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f212eded160> def test_syspath_prepend_with_namespace_packages( testdir: Testdir, monkeypatch: MonkeyPatch ) -> None: for dirname in "hello", "world": d = testdir.mkdir(dirname) ns = d.mkdir("ns_pkg") ns.join("__init__.py").write( "__import__('pkg_resources').declare_namespace(__name__)" ) lib = ns.mkdir(dirname) lib.join("__init__.py").write("def check(): return %r" % dirname) > monkeypatch.syspath_prepend("hello") /builddir/build/BUILD/pytest-6.0.2/testing/test_monkeypatch.py:427: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /builddir/build/BUILDROOT/pytest-6.0.2-1.fc34.x86_64/usr/lib/python3.10/site-packages/_pytest/monkeypatch.py:307: in syspath_prepend fixup_namespace_packages(str(path)) /usr/lib/python3.10/site-packages/pkg_resources/__init__.py:2290: in fixup_namespace_packages subpath = _handle_ns(package, path_item) /usr/lib/python3.10/site-packages/pkg_resources/__init__.py:2212: in _handle_ns loader.load_module(packageName) <frozen importlib._bootstrap_external>:508: in _check_name_wrapper ??? <frozen importlib._bootstrap_external>:1012: in load_module ??? <frozen importlib._bootstrap_external>:837: in load_module ??? _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <_frozen_importlib_external.SourceFileLoader object at 0x7f212eded400> fullname = 'ns_pkg' > ??? E DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead <frozen importlib._bootstrap>:283: DeprecationWarning _________________ TestPDB.test_pdb_interaction_capturing_twice _________________ self = <test_debugging.TestPDB object at 0x7f2119db88e0> testdir = <Testdir local('/tmp/pytest-of-mockbuild/pytest-0/test_pdb_interaction_capturing_twice0')> def test_pdb_interaction_capturing_twice(self, testdir): p1 = testdir.makepyfile( """ import pytest def test_1(): i = 0 print("hello17") pytest.set_trace() x = 3 print("hello18") pytest.set_trace() x = 4 assert 0 """ ) child = testdir.spawn_pytest(str(p1)) child.expect(r"PDB set_trace \(IO-capturing turned off\)") child.expect("test_1") child.expect("x = 3") child.expect("Pdb") child.sendline("c") child.expect(r"PDB continue \(IO-capturing resumed\)") child.expect(r"PDB set_trace \(IO-capturing turned off\)") > child.expect("x = 4") /builddir/build/BUILD/pytest-6.0.2/testing/test_debugging.py:545: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.10/site-packages/pexpect/spawnbase.py:343: in expect return self.expect_list(compiled_pattern_list, /usr/lib/python3.10/site-packages/pexpect/spawnbase.py:372: in expect_list return exp.expect_loop(timeout) /usr/lib/python3.10/site-packages/pexpect/expect.py:181: in expect_loop return self.timeout(e) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pexpect.expect.Expecter object at 0x7f211a09f0d0> err = TIMEOUT('Timeout exceeded.') def timeout(self, err=None): spawn = self.spawn spawn.before = spawn._before.getvalue() spawn.after = TIMEOUT index = self.searcher.timeout_index if index >= 0: spawn.match = TIMEOUT spawn.match_index = index return index else: spawn.match = None spawn.match_index = None msg = str(spawn) msg += '\nsearcher: %s' % self.searcher if err is not None: msg = str(err) + '\n' + msg exc = TIMEOUT(msg) exc.__cause__ = None # in Python 3.x we can use "raise exc from None" > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E <pexpect.pty_spawn.spawn object at 0x7f2119db8940> E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/test_pdb_interaction_capturing_twice0/temp-pexpect', '/tmp/pytest-of-mockbuild/pytest-0/test_pdb_interaction_capturing_twice0/test_pdb_interaction_capturing_twice.py'] E buffer (last 100 chars): b'n_capturing_twice0/test_pdb_interaction_capturing_twice.py(8)test_1()\r\n-> pytest.set_trace()\r\n(Pdb) ' E before (last 100 chars): b'n_capturing_twice0/test_pdb_interaction_capturing_twice.py(8)test_1()\r\n-> pytest.set_trace()\r\n(Pdb) ' E after: <class 'pexpect.exceptions.TIMEOUT'> E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 8768 E child_fd: 20 E closed: False E timeout: 10.0 E delimiter: <class 'pexpect.exceptions.EOF'> E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/test_pdb_interaction_capturing_twice0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'x = 4') /usr/lib/python3.10/site-packages/pexpect/expect.py:144: TIMEOUT
There are new failures.
Looks like there are new failures. =================================== FAILURES =================================== _____________________ TestPDB.test_pdb_interaction_doctest _____________________ > assert "\r\n'i=0.'\r\n" in child.before.decode("utf8") E assert "\r\n'i=0.'\r\n" in ") 'i=%i.' % i\r\n\x1b[?2004l\r'i=0.'\r\n\x1b[?2004h(" E + where ") 'i=%i.' % i\r\n\x1b[?2004l\r'i=0.'\r\n\x1b[?2004h(" = <built-in method decode of bytes object at 0x7f4483068b70>('utf8') E + where <built-in method decode of bytes object at 0x7f4483068b70> = b") 'i=%i.' % i\r\n\x1b[?2004l\r'i=0.'\r\n\x1b[?2004h(".decode E + where b") 'i=%i.' % i\r\n\x1b[?2004l\r'i=0.'\r\n\x1b[?2004h(" = <pexpect.pty_spawn.spawn object at 0x7f4483095ca0>.before ___________________ TestPDB.test_pdb_with_injected_do_debug ____________________ > raise exc E pexpect.exceptions.TIMEOUT: Timeout exceeded. E <pexpect.pty_spawn.spawn object at 0x7f448308ddc0> E command: /usr/bin/python3 E args: ['/usr/bin/python3', '-mpytest', '--basetemp=/tmp/pytest-of-mockbuild/pytest-0/test_pdb_with_injected_do_debug0/temp-pexpect', '--pdbcls=mytest:CustomPdb', '/tmp/pytest-of-mockbuild/pytest-0/test_pdb_with_injected_do_debug0/mytest.py'] E buffer (last 100 chars): b'-mockbuild/pytest-0/test_pdb_with_injected_do_debug0/mytest.py(34)test_1()\r\n-> x = 3\r\n\x1b[?2004h(Pdb) ' E before (last 100 chars): b'-mockbuild/pytest-0/test_pdb_with_injected_do_debug0/mytest.py(34)test_1()\r\n-> x = 3\r\n\x1b[?2004h(Pdb) ' E after: <class 'pexpect.exceptions.TIMEOUT'> E match: None E match_index: None E exitstatus: None E flag_eof: False E pid: 762 E child_fd: 22 E closed: False E timeout: 10.0 E delimiter: <class 'pexpect.exceptions.EOF'> E logfile: <_io.BufferedWriter name='/tmp/pytest-of-mockbuild/pytest-0/test_pdb_with_injected_do_debug0/spawn.out'> E logfile_read: None E logfile_send: None E maxread: 2000 E ignorecase: False E searchwindowsize: None E delaybeforesend: 0.05 E delayafterclose: 0.1 E delayafterterminate: 0.1 E searcher: searcher_re: E 0: re.compile(b'\\n\\(Pdb') _______________ TestPDB.test_pdb_continue_with_recursive_debug[] _______________ > assert "\r\nENTERING RECURSIVE DEBUGGER\r\n" in before E AssertionError: assert '\r\nENTERING RECURSIVE DEBUGGER\r\n' in '\r\n\x1b[?2004hdebug set_trace()\r\n\x1b[?2004l\rENTERING RECURSIVE DEBUGGER\r\n' ______________ TestPDB.test_pdb_continue_with_recursive_debug[-s] ______________ > assert "\r\nENTERING RECURSIVE DEBUGGER\r\n" in before E AssertionError: assert '\r\nENTERING RECURSIVE DEBUGGER\r\n' in '\r\n\x1b[?2004hdebug set_trace()\r\n\x1b[?2004l\rENTERING RECURSIVE DEBUGGER\r\n' ________ TestPDB.test_pdb_continue_with_recursive_debug[-p no:capture] _________ > assert "\r\nENTERING RECURSIVE DEBUGGER\r\n" in before E AssertionError: assert '\r\nENTERING RECURSIVE DEBUGGER\r\n' in '\r\n\x1b[?2004hdebug set_trace()\r\n\x1b[?2004l\rENTERING RECURSIVE DEBUGGER\r\n' __________________ test_pdb_suspends_fixture_capturing[capfd] __________________ > assert "\r\n42\r\n" in child.before.decode("utf8") E AssertionError: assert '\r\n42\r\n' in ') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h(' E + where ') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h(' = <built-in method decode of bytes object at 0x7f448313eb70>('utf8') E + where <built-in method decode of bytes object at 0x7f448313eb70> = b') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h('.decode E + where b') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h(' = <pexpect.pty_spawn.spawn object at 0x7f4482e61910>.before _________________ test_pdb_suspends_fixture_capturing[capsys] __________________ > assert "\r\n42\r\n" in child.before.decode("utf8") E AssertionError: assert '\r\n42\r\n' in ') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h(' E + where ') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h(' = <built-in method decode of bytes object at 0x7f4482fbb300>('utf8') E + where <built-in method decode of bytes object at 0x7f4482fbb300> = b') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h('.decode E + where b') p 40 + 2\r\n\x1b[?2004l\r42\r\n\x1b[?2004h(' = <pexpect.pty_spawn.spawn object at 0x7f4482fa1bb0>.before =========================== short test summary info ============================ FAILED testing/test_debugging.py::TestPDB::test_pdb_interaction_doctest - ass... FAILED testing/test_debugging.py::TestPDB::test_pdb_interaction_capturing_twice FAILED testing/test_debugging.py::TestPDB::test_pdb_with_injected_do_debug - ... FAILED testing/test_debugging.py::TestPDB::test_pdb_continue_with_recursive_debug[] FAILED testing/test_debugging.py::TestPDB::test_pdb_continue_with_recursive_debug[-s] FAILED testing/test_debugging.py::TestPDB::test_pdb_continue_with_recursive_debug[-p no:capture] FAILED testing/test_debugging.py::test_pdb_suspends_fixture_capturing[capfd] FAILED testing/test_debugging.py::test_pdb_suspends_fixture_capturing[capsys]
the escape sequences: https://github.com/pytest-dev/pytest/issues/8256
This bug appears to have been reported against 'rawhide' during the Fedora 34 development cycle. Changing version to 34.
Appears to be solved: https://copr.fedorainfracloud.org/coprs/g/python/python3.10/package/pytest/