diff --git a/src/_pytest/debugging.py b/src/_pytest/debugging.py index 76ec072dc..a5b9e9c86 100644 --- a/src/_pytest/debugging.py +++ b/src/_pytest/debugging.py @@ -256,7 +256,7 @@ def _test_pytest_function(pyfuncitem): _pdb = pytestPDB._init_pdb() testfunction = pyfuncitem.obj pyfuncitem.obj = _pdb.runcall - if "func" in pyfuncitem._fixtureinfo.argnames: # noqa + if "func" in pyfuncitem._fixtureinfo.argnames: # pragma: no branch raise ValueError("--trace can't be used with a fixture named func!") pyfuncitem.funcargs["func"] = testfunction new_list = list(pyfuncitem._fixtureinfo.argnames) diff --git a/testing/test_pdb.py b/testing/test_pdb.py index 77e421af1..cc2ea15d2 100644 --- a/testing/test_pdb.py +++ b/testing/test_pdb.py @@ -1148,7 +1148,11 @@ def test_pdbcls_via_local_module(testdir): class Wrapped: class MyPdb: def set_trace(self, *args): - print("mypdb_called", args) + print("settrace_called", args) + + def runcall(self, *args, **kwds): + print("runcall_called", args, kwds) + assert "func" in kwds """, ) result = testdir.runpytest( @@ -1165,4 +1169,11 @@ def test_pdbcls_via_local_module(testdir): str(p1), "--pdbcls=mypdb:Wrapped.MyPdb", syspathinsert=True ) assert result.ret == 0 - result.stdout.fnmatch_lines(["*mypdb_called*", "* 1 passed in *"]) + result.stdout.fnmatch_lines(["*settrace_called*", "* 1 passed in *"]) + + # Ensure that it also works with --trace. + result = testdir.runpytest( + str(p1), "--pdbcls=mypdb:Wrapped.MyPdb", "--trace", syspathinsert=True + ) + assert result.ret == 0 + result.stdout.fnmatch_lines(["*runcall_called*", "* 1 passed in *"])