summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/support.py39
-rw-r--r--Lib/test/test_math.py5
-rw-r--r--Lib/test/test_subprocess.py5
3 files changed, 31 insertions, 18 deletions
diff --git a/Lib/test/support.py b/Lib/test/support.py
index 1bf9ca5..d3f7f4c 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'
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py
index 636ff2c..715003a 100644
--- a/Lib/test/test_math.py
+++ b/Lib/test/test_math.py
@@ -670,10 +670,9 @@ class MathTests(unittest.TestCase):
self.assertTrue(math.isnan(math.log2(NAN)))
@requires_IEEE_754
+ # log2() is not accurate enough on Mac OS X Tiger (10.4)
+ @support.requires_mac_ver(10, 5)
def testLog2Exact(self):
- # log2() is not accurate enough on Mac OS X Tiger (10.4)
- support.requires_mac_ver(10, 5)
-
# Check that we get exact equality for log2 of powers of 2.
actual = [math.log2(math.ldexp(1.0, n)) for n in range(-1074, 1024)]
expected = [float(n) for n in range(-1074, 1024)]
diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py
index 859df34..7d4ca2c 100644
--- a/Lib/test/test_subprocess.py
+++ b/Lib/test/test_subprocess.py
@@ -1281,6 +1281,11 @@ class POSIXProcessTestCase(BaseTestCase):
"Some fds were left open")
self.assertIn(1, remaining_fds, "Subprocess failed")
+ # Mac OS X Tiger (10.4) has a kernel bug: sometimes, the file
+ # descriptor of a pipe closed in the parent process is valid in the
+ # child process according to fstat(), but the mode of the file
+ # descriptor is invalid, and read or write raise an error.
+ @support.requires_mac_ver(10, 5)
def test_pass_fds(self):
fd_status = support.findfile("fd_status.py", subdir="subprocessdata")