diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-23 17:01:44 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2010-10-23 17:01:44 (GMT) |
commit | acd0fda1a46fa7d356c1e5de508dd33ce21e7a8f (patch) | |
tree | c716502246812b5bc9ea14ebddfb41afdb758590 | |
parent | 8035bc5c048ff08f652649754eb8ea769337afa0 (diff) | |
download | cpython-acd0fda1a46fa7d356c1e5de508dd33ce21e7a8f.zip cpython-acd0fda1a46fa7d356c1e5de508dd33ce21e7a8f.tar.gz cpython-acd0fda1a46fa7d356c1e5de508dd33ce21e7a8f.tar.bz2 |
Fix SOCK_CLOEXEC and SOCK_NONBLOCK tests on recent glibcs with old Linux kernels.
-rw-r--r-- | Lib/test/test_socket.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 511e590..1f8f93f 100644 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -13,6 +13,7 @@ import queue import sys import os import array +import platform import contextlib from weakref import proxy import signal @@ -1827,11 +1828,24 @@ class ContextManagersTest(ThreadedTCPSocketTest): self.assertTrue(sock._closed) self.assertRaises(socket.error, sock.sendall, b'foo') + +def linux_version(): + try: + # platform.release() is something like '2.6.33.7-desktop-2mnb' + version_string = platform.release().split('-')[0] + return tuple(map(int, version_string.split('.'))) + except ValueError: + return 0, 0, 0 + @unittest.skipUnless(hasattr(socket, "SOCK_CLOEXEC"), "SOCK_CLOEXEC not defined") @unittest.skipUnless(fcntl, "module fcntl not available") class CloexecConstantTest(unittest.TestCase): def test_SOCK_CLOEXEC(self): + v = linux_version() + if v < (2, 6, 28): + self.skipTest("Linux kernel 2.6.28 or higher required, not %s" + % ".".join(map(str, v))) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM | socket.SOCK_CLOEXEC) self.assertTrue(s.type & socket.SOCK_CLOEXEC) @@ -1850,6 +1864,10 @@ class NonblockConstantTest(unittest.TestCase): self.assertEqual(s.gettimeout(), None) def test_SOCK_NONBLOCK(self): + v = linux_version() + if v < (2, 6, 28): + self.skipTest("Linux kernel 2.6.28 or higher required, not %s" + % ".".join(map(str, v))) # a lot of it seems silly and redundant, but I wanted to test that # changing back and forth worked ok s = socket.socket(socket.AF_INET, |