From 47c884129d4b12cd06a5b77c5833b0afee28cd25 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 27 Apr 2010 23:33:58 +0000 Subject: [PATCH] Partial revert of r80556 (Issue #7449, part 5, fix ctypes test) Rewrite r80556: the thread test have to be executed just after the test on libc_open() and so the test cannot be splitted in two functions (without duplicating code, and I don't want to duplicate code). --- Lib/ctypes/test/test_errno.py | 44 ++++++++++++++++------------------- 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/Lib/ctypes/test/test_errno.py b/Lib/ctypes/test/test_errno.py index 79946d19388..c7a5bf0d4fa 100644 --- a/Lib/ctypes/test/test_errno.py +++ b/Lib/ctypes/test/test_errno.py @@ -7,11 +7,11 @@ try: except ImportError: threading = None -libc_name = find_library("c") - class Test(unittest.TestCase): - @unittest.skipUnless(libc_name, 'Unable to find the C library') def test_open(self): + libc_name = find_library("c") + if libc_name is None: + raise unittest.SkipTest("Unable to find C library") libc = CDLL(libc_name, use_errno=True) if os.name == "nt": libc_open = libc._open @@ -26,30 +26,26 @@ class Test(unittest.TestCase): self.assertEqual(set_errno(32), errno.ENOENT) self.assertEqual(get_errno(), 32) - @unittest.skipUnless(libc_name, 'Unable to find the C library') - @unittest.skipUnless(threading, 'This test requires threading.') - def test_open_thread(self): - self.assertEqual(set_errno(32), errno.ENOENT) + if threading: + def _worker(): + set_errno(0) - def _worker(): + libc = CDLL(libc_name, use_errno=False) + if os.name == "nt": + libc_open = libc._open + else: + libc_open = libc.open + libc_open.argtypes = c_char_p, c_int + self.assertEqual(libc_open("", 0), -1) + self.assertEqual(get_errno(), 0) + + t = threading.Thread(target=_worker) + t.start() + t.join() + + self.assertEqual(get_errno(), 32) set_errno(0) - libc = CDLL(libc_name, use_errno=False) - if os.name == "nt": - libc_open = libc._open - else: - libc_open = libc.open - libc_open.argtypes = c_char_p, c_int - self.assertEqual(libc_open("", 0), -1) - self.assertEqual(get_errno(), 0) - - t = threading.Thread(target=_worker) - t.start() - t.join() - - self.assertEqual(get_errno(), 32) - set_errno(0) - @unittest.skipUnless(os.name == "nt", 'Test specific to Windows') def test_GetLastError(self): dll = WinDLL("kernel32", use_last_error=True)