From blep at users.sourceforge.net Fri Jun 27 10:45:37 2008 From: blep at users.sourceforge.net (Baptiste Lepilleur) Date: Fri, 27 Jun 2008 10:45:37 +0200 Subject: [py-dev] py.test bug: large stack trace produced with full source dump on import failure Message-ID: 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 "", line 1, in File "E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\testing\test_sbuildformat.py", line 4, in import sbuilder.sbuildfileformat as sbuildfileformat File "E:\prg\vc\Lib\jsoncpp.roadmap\trunk\jsoncpp\sbuilder\src\sbuilder\sbuildfileformat.py", line 2507, in 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 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.