[py-dev] confusion on traceback.cut

holger krekel holger at merlinux.eu
Mon Jan 18 03:06:54 CET 2010


Hi Ronny,

On Sun, Jan 17, 2010 at 22:27 +0100, Ronny Pfannschmidt wrote:
> Hi,
> just played around with traceback cut/filter
> but i don't understand whats happening here:
> 
>         >>> import py
>         >>> py._pydir
>         local('/home/ronny/Projects/py/py')
>         >>> e = py.test.raises(ValueError, "int('a')")
>         >>> tb = e.traceback
>         >>> tb.cut(excludepath=py._pydir)
>         [<TracebackEntry /home/ronny/Projects/py/py/_test/outcome.py:89>, <TracebackEntry /home/ronny/Projects/py/py/_builtin.py:179>, <TracebackEntry <string>:5>, <TracebackEntry <codegen /home/ronny/Projects/py/py/_test/outcome.py:88>:1>]

A slightly special case because other than the pydir only
synthetic code is involved (generated source).  If you have 
at least one "real" entry not relative to pydir it should work. 
Anyway, i changed this in rev1610 - let's see if it causes 
any problems (in py.test reporting).

> i expected it to remove the first few items
> 
> on the other hand
>         >>> tb.filter(lambda x:not
>         py.path.local(x.path).relto(py._pydir))
>         [<TracebackEntry <string>:5>, <TracebackEntry
>         <codegen /home/ronny/Projects/py/py/_test/outcome.py:88>:1>]
>         
> seems to do exactly that and i expected it to filter the last entry, too

The last entry is generated source, what you see if where it got generated.
By passing in a filter function you override the default filter
lambda x: not x.ishidden().  You can "AND" that in your lambda. 

> can we please clarify what each of those really.

hope it is now.

holger



More information about the Pytest-dev mailing list