[pypy-svn] r33049 - pypy/dist/pypy/objspace/test

auc at codespeak.net auc at codespeak.net
Mon Oct 9 14:55:40 CEST 2006


Author: auc
Date: Mon Oct  9 14:55:39 2006
New Revision: 33049

Modified:
   pypy/dist/pypy/objspace/test/_test_logic_build.py
Log:
replay failed tests with debug info on


Modified: pypy/dist/pypy/objspace/test/_test_logic_build.py
==============================================================================
--- pypy/dist/pypy/objspace/test/_test_logic_build.py	(original)
+++ pypy/dist/pypy/objspace/test/_test_logic_build.py	Mon Oct  9 14:55:39 2006
@@ -15,21 +15,25 @@
     print "skipping because", desc
     raise Skip
 
-def run_tests(tm):
-    classes = [obj for name, obj in inspect.getmembers(tm)
-               if isinstance(obj, type)]
+def get_test_classes():
+    return [obj for name, obj in inspect.getmembers(tm)
+            if isinstance(obj, type)]
+
+def get_test_methods(klass):
+    return [(name, meth)
+            for name, meth in inspect.getmembers(klass())
+            if not name.startswith('_')]
 
+def run_tests(tm):
+    
     tm.raises = raises
     tm.skip = skip
-
+    
     successes = []
     failures = []
     skipped = []
 
-
-    for klass in classes:
-        tests = [(name, meth) for name, meth in inspect.getmembers(klass())
-                 if not name.startswith('_')]
+    for tests in [get_test_methods(cl) for cl in get_test_classes()] :
         for name, meth in tests:
             if name == 'setup_class': continue
             try:
@@ -37,7 +41,7 @@
             except Skip:
                 skipped.append(name)
             except Exception, e:
-                failures.append((name, e))
+                failures.append((name, meth, e))
             else:
                 successes.append(name)
 
@@ -47,12 +51,17 @@
         print
     if failures:
         print "Failures :"
-        for name, exc in failures:
+        for name, _, exc in failures:
             print '', name, "failed because", str(exc)
         print
     if skipped:
         print "Skipped"
         print '', '\n '.join(skipped)
+
+    # replay failures with more info
+    switch_debug_info()
+    for name, meth, _ in failures:
+        meth()
         
 if __name__ == __name__:
     import sys



More information about the Pypy-commit mailing list