Skip to content

Commit 8075fe1

Browse files
authored
[3.8] bpo-41009: fix requires_OS_version() class decorator (GH-20942) (GH-20948)
Signed-off-by: Christian Heimes <[email protected]> Automerge-Triggered-By: @tiran. (cherry picked from commit bb6ec14) Co-authored-by: Christian Heimes <[email protected]>
1 parent f547d06 commit 8075fe1

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

Lib/test/support/__init__.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -586,25 +586,25 @@ def _requires_unix_version(sysname, min_version):
586586
For example, @_requires_unix_version('FreeBSD', (7, 2)) raises SkipTest if
587587
the FreeBSD version is less than 7.2.
588588
"""
589-
def decorator(func):
590-
@functools.wraps(func)
591-
def wrapper(*args, **kw):
592-
if platform.system() == sysname:
593-
version_txt = platform.release().split('-', 1)[0]
594-
try:
595-
version = tuple(map(int, version_txt.split('.')))
596-
except ValueError:
597-
pass
598-
else:
599-
if version < min_version:
600-
min_version_txt = '.'.join(map(str, min_version))
601-
raise unittest.SkipTest(
602-
"%s version %s or higher required, not %s"
603-
% (sysname, min_version_txt, version_txt))
604-
return func(*args, **kw)
605-
wrapper.min_version = min_version
606-
return wrapper
607-
return decorator
589+
import platform
590+
min_version_txt = '.'.join(map(str, min_version))
591+
version_txt = platform.release().split('-', 1)[0]
592+
if platform.system() == sysname:
593+
try:
594+
version = tuple(map(int, version_txt.split('.')))
595+
except ValueError:
596+
skip = False
597+
else:
598+
skip = version < min_version
599+
else:
600+
skip = False
601+
602+
return unittest.skipIf(
603+
skip,
604+
f"{sysname} version {min_version_txt} or higher required, not "
605+
f"{version_txt}"
606+
)
607+
608608

609609
def requires_freebsd_version(*min_version):
610610
"""Decorator raising SkipTest if the OS is FreeBSD and the FreeBSD version is
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix use of ``support.require_{linux|mac|freebsd}_version()`` decorators as
2+
class decorator.

0 commit comments

Comments
 (0)