Skip to content

Commit cd6f911

Browse files
authored
[3.9] bpo-41009: fix requires_OS_version() class decorator (GH-20942) (GH-20947)
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 fdf6872 commit cd6f911

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
@@ -582,25 +582,25 @@ def _requires_unix_version(sysname, min_version):
582582
For example, @_requires_unix_version('FreeBSD', (7, 2)) raises SkipTest if
583583
the FreeBSD version is less than 7.2.
584584
"""
585-
def decorator(func):
586-
@functools.wraps(func)
587-
def wrapper(*args, **kw):
588-
if platform.system() == sysname:
589-
version_txt = platform.release().split('-', 1)[0]
590-
try:
591-
version = tuple(map(int, version_txt.split('.')))
592-
except ValueError:
593-
pass
594-
else:
595-
if version < min_version:
596-
min_version_txt = '.'.join(map(str, min_version))
597-
raise unittest.SkipTest(
598-
"%s version %s or higher required, not %s"
599-
% (sysname, min_version_txt, version_txt))
600-
return func(*args, **kw)
601-
wrapper.min_version = min_version
602-
return wrapper
603-
return decorator
585+
import platform
586+
min_version_txt = '.'.join(map(str, min_version))
587+
version_txt = platform.release().split('-', 1)[0]
588+
if platform.system() == sysname:
589+
try:
590+
version = tuple(map(int, version_txt.split('.')))
591+
except ValueError:
592+
skip = False
593+
else:
594+
skip = version < min_version
595+
else:
596+
skip = False
597+
598+
return unittest.skipIf(
599+
skip,
600+
f"{sysname} version {min_version_txt} or higher required, not "
601+
f"{version_txt}"
602+
)
603+
604604

605605
def requires_freebsd_version(*min_version):
606606
"""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)