diff options
Diffstat (limited to 'Lib/test/support.py')
-rw-r--r-- | Lib/test/support.py | 39 |
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' |