summaryrefslogtreecommitdiff
path: root/Lib/test/support.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/support.py')
-rw-r--r--Lib/test/support.py39
1 files changed, 24 insertions, 15 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py
index 1bf9ca5237..d3f7f4c5e5 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -301,23 +301,32 @@ def linux_version():
return 0, 0, 0
def requires_mac_ver(*min_version):
- """Raise SkipTest if the OS is Mac OS X and the OS X version if less than
- min_version.
+ """Decorator raising SkipTest if the OS is Mac OS X and the OS X
+ version if less than min_version.
- For example, support.requires_linux_version(10, 5) raises SkipTest if the
- version is less than 10.5.
+ For example, @requires_mac_ver(10, 5) raises SkipTest if the OS X version
+ is lesser than 10.5.
"""
- if sys.platform != 'darwin':
- return
- version_txt = platform.mac_ver()[0]
- try:
- version = tuple(map(int, version_txt.split('.')))
- except ValueError:
- return
- if version < min_version:
- min_version_txt = '.'.join(map(str, min_version))
- raise unittest.SkipTest("Mac OS X %s or higher required, not %s"
- % (min_version_txt, version_txt))
+ def decorator(func):
+ @functools.wraps(func)
+ def wrapper(*args, **kw):
+ if sys.platform == 'darwin':
+ version_txt = platform.mac_ver()[0]
+ try:
+ version = tuple(map(int, version_txt.split('.')))
+ except ValueError:
+ pass
+ else:
+ if version < min_version:
+ min_version_txt = '.'.join(map(str, min_version))
+ raise unittest.SkipTest(
+ "Mac OS X %s or higher required, not %s"
+ % (min_version_txt, version_txt))
+ return func(*args, **kw)
+ wrapper.min_version = min_version
+ return wrapper
+ return decorator
+
HOST = 'localhost'