[3.8] bpo-41009: fix requires_OS_version() class decorator (GH-20942) (GH-20948)
Signed-off-by: Christian Heimes <christian@python.org>
Automerge-Triggered-By: @tiran.
(cherry picked from commit bb6ec14479
)
Co-authored-by: Christian Heimes <christian@python.org>
This commit is contained in:
parent
f547d06ea7
commit
8075fe199b
|
@ -586,25 +586,25 @@ def _requires_unix_version(sysname, min_version):
|
|||
For example, @_requires_unix_version('FreeBSD', (7, 2)) raises SkipTest if
|
||||
the FreeBSD version is less than 7.2.
|
||||
"""
|
||||
def decorator(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kw):
|
||||
if platform.system() == sysname:
|
||||
version_txt = platform.release().split('-', 1)[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(
|
||||
"%s version %s or higher required, not %s"
|
||||
% (sysname, min_version_txt, version_txt))
|
||||
return func(*args, **kw)
|
||||
wrapper.min_version = min_version
|
||||
return wrapper
|
||||
return decorator
|
||||
import platform
|
||||
min_version_txt = '.'.join(map(str, min_version))
|
||||
version_txt = platform.release().split('-', 1)[0]
|
||||
if platform.system() == sysname:
|
||||
try:
|
||||
version = tuple(map(int, version_txt.split('.')))
|
||||
except ValueError:
|
||||
skip = False
|
||||
else:
|
||||
skip = version < min_version
|
||||
else:
|
||||
skip = False
|
||||
|
||||
return unittest.skipIf(
|
||||
skip,
|
||||
f"{sysname} version {min_version_txt} or higher required, not "
|
||||
f"{version_txt}"
|
||||
)
|
||||
|
||||
|
||||
def requires_freebsd_version(*min_version):
|
||||
"""Decorator raising SkipTest if the OS is FreeBSD and the FreeBSD version is
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix use of ``support.require_{linux|mac|freebsd}_version()`` decorators as
|
||||
class decorator.
|
Loading…
Reference in New Issue