]> granicus.if.org Git - python/commitdiff
Change the strategy for coping with time intensive tests from
authorRaymond Hettinger <python@rcn.com>
Sat, 4 Sep 2004 20:09:13 +0000 (20:09 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 4 Sep 2004 20:09:13 +0000 (20:09 +0000)
"all or none" to "all or some".

This provides much greater test coverage without eating much time.
It also makes it more likely that routine regression testing will
unearth bugs.

Lib/test/test_compiler.py
Lib/test/test_decimal.py

index bc2dd701a80ba56ba6b8dbae6bf7ea28e6a9d80d..63cbc0080d86baad1b825293c820d40fa63afdb7 100644 (file)
@@ -2,6 +2,7 @@ import compiler
 import os
 import test.test_support
 import unittest
+from random import random
 
 class CompilerTest(unittest.TestCase):
 
@@ -18,6 +19,8 @@ class CompilerTest(unittest.TestCase):
             for basename in os.listdir(dir):
                 if not basename.endswith(".py"):
                     continue
+                if not TEST_ALL and random() < 0.98:
+                    continue
                 path = os.path.join(dir, basename)
                 if test.test_support.verbose:
                     print "compiling", path
@@ -31,7 +34,8 @@ class CompilerTest(unittest.TestCase):
                     compiler.compile(buf, basename, "exec")
 
 def test_main():
-    test.test_support.requires("compiler")
+    global TEST_ALL
+    TEST_ALL = test.test_support.is_resource_enabled("compiler")
     test.test_support.run_unittest(CompilerTest)
 
 if __name__ == "__main__":
index 8711e4e6a92860234a1b08f8b4865728cf85cda5..a4e4041c3110d1e762c16a7f21534066e944b049 100644 (file)
@@ -181,6 +181,10 @@ class DecimalTest(unittest.TestCase):
     def eval_equation(self, s):
         #global DEFAULT_PRECISION
         #print DEFAULT_PRECISION
+
+        if not TEST_ALL and random.random() < 0.90:
+            return
+
         try:
             Sides = s.split('->')
             L = Sides[0].strip().split()
@@ -997,9 +1001,13 @@ class ContextAPItests(unittest.TestCase):
 def test_main(arith=False, verbose=None):
     """ Execute the tests.
 
-    Runs arithmetic tests if arith is True or if the "decimal" resource
-    is enables in regrtest.py
+    Runs all arithmetic tests if arith is True or if the "decimal" resource
+    is enabled in regrtest.py
     """
+
+    global TEST_ALL
+    TEST_ALL = arith or is_resource_enabled('decimal')
+
     test_classes = [
         DecimalExplicitConstructionTest,
         DecimalImplicitConstructionTest,
@@ -1008,20 +1016,17 @@ def test_main(arith=False, verbose=None):
         DecimalUsabilityTest,
         DecimalPythonAPItests,
         ContextAPItests,
+        DecimalTest,
     ]
 
-    if arith or is_resource_enabled('decimal'):
-        test_classes.extend([DecimalTest])
-
     run_unittest(*test_classes)
     import decimal as DecimalModule
     run_doctest(DecimalModule, verbose)
-    return
 
 
 if __name__ == '__main__':
     # Calling with no arguments runs all tests.
-    # Calling with "Skip" will skipover the arithmetic tests.
+    # Calling with "Skip" will skip over 90% of the arithmetic tests.
     if len(sys.argv) == 1:
         test_main(arith=True, verbose=True)
     elif len(sys.argv) == 2: