diff -r 4a6709a071d0 Lib/test/test_generators.py --- a/Lib/test/test_generators.py Thu Oct 13 13:38:14 2011 +0200 +++ b/Lib/test/test_generators.py Sat Oct 15 16:43:46 2011 +0200 @@ -1744,9 +1744,7 @@ >>> g = f() >>> next(g) >>> del g ->>> sys.stderr.getvalue().startswith( -... "Exception RuntimeError: 'generator ignored GeneratorExit' in " -... ) +>>> "RuntimeError: generator ignored GeneratorExit" in sys.stderr.getvalue() True >>> sys.stderr = old @@ -1861,16 +1859,13 @@ ... l = Leaker() ... del l ... err = sys.stderr.getvalue().strip() -... err.startswith( -... "Exception RuntimeError: RuntimeError() in <" -... ) -... err.endswith("> ignored") -... len(err.splitlines()) +... "Exception ignored in" in err +... "RuntimeError:" in err ... finally: ... sys.stderr = old True True -1 + diff -r 4a6709a071d0 Python/errors.c --- a/Python/errors.c Thu Oct 13 13:38:14 2011 +0200 +++ b/Python/errors.c Sat Oct 15 16:43:46 2011 +0200 @@ -717,7 +717,12 @@ PyErr_Fetch(&t, &v, &tb); f = PySys_GetObject("stderr"); if (f != NULL && f != Py_None) { - PyFile_WriteString("Exception ", f); + if (obj) { + PyFile_WriteString("Exception ignored in: ", f); + PyFile_WriteObject(obj, f, 0); + PyFile_WriteString("\n", f); + } + PyTraceBack_Print(tb, f); if (t) { PyObject* moduleName; char* className; @@ -747,15 +752,11 @@ PyFile_WriteString(className, f); if (v && v != Py_None) { PyFile_WriteString(": ", f); - PyFile_WriteObject(v, f, 0); + PyFile_WriteObject(v, f, Py_PRINT_RAW); } + PyFile_WriteString("\n", f); Py_XDECREF(moduleName); } - if (obj) { - PyFile_WriteString(" in ", f); - PyFile_WriteObject(obj, f, 0); - } - PyFile_WriteString(" ignored\n", f); PyErr_Clear(); /* Just in case */ } Py_XDECREF(t);