]> granicus.if.org Git - python/commitdiff
test_support.requires(): Instead of raising TestSkipped, raise a new
authorFred Drake <fdrake@acm.org>
Mon, 3 Feb 2003 15:19:30 +0000 (15:19 +0000)
committerFred Drake <fdrake@acm.org>
Mon, 3 Feb 2003 15:19:30 +0000 (15:19 +0000)
exception, ResourceDenied.  This is used to distinguish between tests that
are skipped for other reasons (platform support, missing data, etc.) from
those that are skipped because a "resource" has not been enabled.  This
prevents those tests from being reported as unexpected skips for the
platform; those should only be considered unexpected skips if the resource
were enabled.

Lib/test/regrtest.py
Lib/test/test_support.py

index 8e3a1222c13c42d31374dad4eb29b13455548c51..cc334393ddde68c0352f5b0a028afc9c12b8e388 100755 (executable)
@@ -196,6 +196,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
     good = []
     bad = []
     skipped = []
+    resource_denieds = []
 
     if findleaks:
         try:
@@ -263,6 +264,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
             bad.append(test)
         else:
             skipped.append(test)
+            if ok == -2:
+                resource_denieds.append(test)
         if findleaks:
             gc.collect()
             if gc.garbage:
@@ -299,7 +302,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
         e = _ExpectedSkips()
         plat = sys.platform
         if e.isvalid():
-            surprise = Set(skipped) - e.getexpected()
+            surprise = Set(skipped) - e.getexpected() - Set(resource_denieds)
             if surprise:
                 print count(len(surprise), "skip"), \
                       "unexpected on", plat + ":"
@@ -395,6 +398,11 @@ def runtest(test, generate, verbose, quiet, testdir = None):
                 indirect_test()
         finally:
             sys.stdout = save_stdout
+    except test_support.ResourceDenied, msg:
+        if not quiet:
+            print test, "skipped --", msg
+            sys.stdout.flush()
+        return -2
     except (ImportError, test_support.TestSkipped), msg:
         if not quiet:
             print test, "skipped --", msg
index 81695330d2574e3d317170941a2edb89eec1ee93..8ac385134a4bf54f5af9b8fac9d3bf6f47c0f5e5 100644 (file)
@@ -21,6 +21,14 @@ class TestSkipped(Error):
     TestFailed.
     """
 
+class ResourceDenied(TestSkipped):
+    """Test skipped because it requested a disallowed resource.
+
+    This is raised when a test calls requires() for a resource that
+    has not be enabled.  It is used to distinguish between expected
+    and unexpected skips.
+    """
+
 verbose = 1              # Flag set to 0 by regrtest.py
 use_resources = None       # Flag set to [] by regrtest.py
 
@@ -57,7 +65,7 @@ def requires(resource, msg=None):
     if not is_resource_enabled(resource):
         if msg is None:
             msg = "Use of the `%s' resource not enabled" % resource
-        raise TestSkipped(msg)
+        raise ResourceDenied(msg)
 
 FUZZ = 1e-6