Kaydet (Commit) 9a0db07c authored tarafından Fred Drake's avatar Fred Drake

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.
üst 13b29102
...@@ -196,6 +196,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0, ...@@ -196,6 +196,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
good = [] good = []
bad = [] bad = []
skipped = [] skipped = []
resource_denieds = []
if findleaks: if findleaks:
try: try:
...@@ -263,6 +264,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0, ...@@ -263,6 +264,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
bad.append(test) bad.append(test)
else: else:
skipped.append(test) skipped.append(test)
if ok == -2:
resource_denieds.append(test)
if findleaks: if findleaks:
gc.collect() gc.collect()
if gc.garbage: if gc.garbage:
...@@ -299,7 +302,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0, ...@@ -299,7 +302,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
e = _ExpectedSkips() e = _ExpectedSkips()
plat = sys.platform plat = sys.platform
if e.isvalid(): if e.isvalid():
surprise = Set(skipped) - e.getexpected() surprise = Set(skipped) - e.getexpected() - Set(resource_denieds)
if surprise: if surprise:
print count(len(surprise), "skip"), \ print count(len(surprise), "skip"), \
"unexpected on", plat + ":" "unexpected on", plat + ":"
...@@ -395,6 +398,11 @@ def runtest(test, generate, verbose, quiet, testdir = None): ...@@ -395,6 +398,11 @@ def runtest(test, generate, verbose, quiet, testdir = None):
indirect_test() indirect_test()
finally: finally:
sys.stdout = save_stdout 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: except (ImportError, test_support.TestSkipped), msg:
if not quiet: if not quiet:
print test, "skipped --", msg print test, "skipped --", msg
......
...@@ -21,6 +21,14 @@ class TestSkipped(Error): ...@@ -21,6 +21,14 @@ class TestSkipped(Error):
TestFailed. 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 verbose = 1 # Flag set to 0 by regrtest.py
use_resources = None # Flag set to [] by regrtest.py use_resources = None # Flag set to [] by regrtest.py
...@@ -57,7 +65,7 @@ def requires(resource, msg=None): ...@@ -57,7 +65,7 @@ def requires(resource, msg=None):
if not is_resource_enabled(resource): if not is_resource_enabled(resource):
if msg is None: if msg is None:
msg = "Use of the `%s' resource not enabled" % resource msg = "Use of the `%s' resource not enabled" % resource
raise TestSkipped(msg) raise ResourceDenied(msg)
FUZZ = 1e-6 FUZZ = 1e-6
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment