From 9a0db07c2ffd4e4b3ae75d5820dc6b4152b3582b Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Mon, 3 Feb 2003 15:19:30 +0000 Subject: test_support.requires(): Instead of raising TestSkipped, raise a new 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 | 10 +++++++++- Lib/test/test_support.py | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 8e3a122..cc33439 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -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 diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index 8169533..8ac3851 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -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 -- cgit v0.12