[Python-checkins] r80569 - python/trunk/Lib/ctypes/test/test_errno.py

victor.stinner python-checkins at python.org
Wed Apr 28 01:33:58 CEST 2010


Author: victor.stinner
Date: Wed Apr 28 01:33:58 2010
New Revision: 80569

Log:
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).


Modified:
   python/trunk/Lib/ctypes/test/test_errno.py

Modified: python/trunk/Lib/ctypes/test/test_errno.py
==============================================================================
--- python/trunk/Lib/ctypes/test/test_errno.py	(original)
+++ python/trunk/Lib/ctypes/test/test_errno.py	Wed Apr 28 01:33:58 2010
@@ -7,11 +7,11 @@
 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 @@
         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)
+
+                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()
 
-        def _worker():
+            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)


More information about the Python-checkins mailing list