[py-dev] py.test bug: large stack trace produced with full source dump on import failure
Baptiste Lepilleur
blep at users.sourceforge.net
Fri Jun 27 10:45:37 CEST 2008
I have run into an issue with py.test which make it pretty much unsable with
the following scenario:
- a test module import another module
- the import fails due to an exception thrown by the other module
This scenario raise two bugs (hopefully this is the scenario to reproduce
this bug):
- Py.test produces a stack trace with a full source dump of the imported
module source
- Information about the exception that caused the failure is missing.
The source does not end line 2269, so my guess is that py.test dump the
source until the source line where the exception was raised.
I believe py.test should truncate the source to show only the relevant part,
that is ignore the 2000 lines until the global variable declaration
SCHEMA_SCHEMA in this case.
To illustrate the issue, I've put excerpt from both the standard python
stacktrace and the py.test failure below:
*** Standard python traces:
**********************
---
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import test_sbuildformat
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\testing\test_sbuildformat.py",
line 4, in <module>
import sbuilder.sbuildfileformat as sbuildfileformat
File
"E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\sbuildfileformat.py",
line 2507, in <module>
SCHEMA_SCHEMA = getSchemaSchema()
File
"E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\sbuildfileformat.py",
line 2269, in getSchemaSchema
error_log.makeErrorReport( tokenizer.getNormalizedInput(), 13 )
sbuilder.sbuildfileformat.SchemaTypeParameterError
>>>
---
**** Py.test traces (abrievated, full source dump is 120KO)
**********************************************
============================= test process starts
=============================
executable: c:\Python25\python.exe (2.5.2-final-0)
using py lib: c:\Python25\lib\site-packages\py <rev unknown>
test_sbuilder.py[1] .
test_sbuildformat.py - FAILED TO LOAD MODULE
_______________________________________________________________________________
________________________________ entrypoint:
_________________________________
from __future__ import generators
import types
import re
> import sbuilder.sbuildfileformat as sbuildfileformat
[E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\testing\test_sbuildformat.py:4]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _
import types
import sets
import weakref
[....] 120KO later:
> SCHEMA_SCHEMA = getSchemaSchema()
[E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\sbuildfileformat.py:2507]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _
def getSchemaSchema():
"""Returns a document representing a schema of a schema.
This can be used to validate a schema.
Exceptions:
- DocumentParsingError if failed to parse the schema text document
(should never occurs, it is a bug introduced when updating the
schema).
-
"""
error_log = ErrorLog( synchronous_display = False )
error_memo = error_log.errorMemo()
tokenizer = Tokenizer( getSchemaTextDocument(), 'schema.schema',
error_log )
parser = Parser( tokenizer, error_log )
schema_value = parser.parse()
if schema_value is None:
raise DocumentParsingError, \
error_log.makeErrorReport( tokenizer.getNormalizedInput(),
13 )
try:
schema_schema = SchemaBuilder(error_log).getSchema(
schema_value )
if schema_schema and not schema_schema.check( error_log ):
schema_schema = None
except SchemaTypeParameterError, error:
error.log( error_log )
schema_schema = None
if schema_schema is None or error_log.hasNewErrorsSinceMemo(
error_memo ):
raise SchemaTypeParameterError, \
E error_log.makeErrorReport( tokenizer.getNormalizedInput(),
13 )
> SchemaTypeParameterError
[E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\sbuildfileformat.py:2269]
_______________________________________________________________________________
============= tests finished: 1 passed, 1 failed in 0.09 seconds
==============
Regards,
Baptiste.
More information about the Pytest-dev
mailing list