Skip to content

tracebackhide is too aggressive when debugging fixture crashes #107

Open
@oremanj

Description

@oremanj

I use pdbpp, which understands __tracebackhide__ like pytest does. Today, pytest --pdb on a simultaneous fixture+test crash dumped me at

[10] > [...]/lib/python3.8/site-packages/_pytest/python.py(166)pytest_pyfunc_call()
-> result = testfunction(**testargs)
   9 frames hidden (try 'help hidden_frames')

with no hint as to where I could find the constituent exceptions of the MultiError. It turns out that all the frames it passed through after being raised were hidden:

 [17]   [...]/lib/python3.8/site-packages/trio/testing/_trio_test.py(29)wrapper()
-> return _core.run(
[18]   [...]/lib/python3.8/site-packages/trio/_core/_run.py(1804)run()
-> raise runner.main_task_outcome.error
[19]   [...]/lib/python3.8/site-packages/pytest_trio/plugin.py(343)_bootstrap_fixtures_and_run_test()
-> raise trio.MultiError(test_ctx.error_list)

It seems like maybe we should remove the __tracebackhide__ from _bootstrap_fixtures_and_run_test? If the traceback starts somewhere within the test, it's pretty obvious that this thing called _bootstrap_fixtures_and_run_test is a boundary above which you're not going to find your own code. If it starts in the raise MultiError line in that function, having the frame not hidden is pretty useful in understanding what happened.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions