[pypy-svn] r58731 - pypy/branch/2.5-merge/lib-python

hpk at codespeak.net hpk at codespeak.net
Tue Oct 7 14:05:53 CEST 2008


Author: hpk
Date: Tue Oct  7 14:05:53 2008
New Revision: 58731

Modified:
   pypy/branch/2.5-merge/lib-python/conftest.py
Log:
try a nicer representation of failures 


Modified: pypy/branch/2.5-merge/lib-python/conftest.py
==============================================================================
--- pypy/branch/2.5-merge/lib-python/conftest.py	(original)
+++ pypy/branch/2.5-merge/lib-python/conftest.py	Tue Oct  7 14:05:53 2008
@@ -553,6 +553,9 @@
 import getpass
 
 class ReallyRunFileExternal(py.test.collect.Item): 
+    class ExternalFailure(Exception):
+        """Failure in running subprocess"""
+
     def getinvocation(self, regrtest): 
         fspath = regrtest.getfspath() 
         python = sys.executable 
@@ -611,10 +614,13 @@
         regrtest = self.parent.regrtest
         exit_status, test_stdout, test_stderr = self.getresult(regrtest) 
         if exit_status:
-             time.sleep(0.5)   # time for a Ctrl-C to reach us :-)
-             print >>sys.stdout, test_stdout
-             print >>sys.stderr, test_stderr
-             py.test.fail("running test failed, see stderr output below") 
+            raise self.ExternalFailure(test_stdout, test_stderr)
+
+    def repr_failure(self, excinfo, outerr):
+        if not excinfo.errisinstance(self.ExternalFailure):
+            return super(ReallyRunFileExternal, self).repr_failure(excinfo, outerr)
+        out, err = excinfo.value.args
+        return out + err
 
     def getstatusouterr(self, cmd): 
         tempdir = py.test.ensuretemp(self.fspath.basename)



More information about the Pypy-commit mailing list