Index: Lib/test/test_multiprocessing.py =================================================================== --- Lib/test/test_multiprocessing.py (revision 81154) +++ Lib/test/test_multiprocessing.py (working copy) @@ -37,6 +37,11 @@ from multiprocessing import util +try: + from multiprocessing.sharedctypes import Value, copy + HAS_SHAREDCTYPES = True +except ImportError: + HAS_SHAREDCTYPES = False # # # @@ -71,7 +76,7 @@ # try: - from ctypes import Structure, Value, copy, c_int, c_double + from ctypes import Structure, c_int, c_double except ImportError: Structure = object c_int = c_double = None @@ -794,6 +799,8 @@ # # +@unittest.skipUnless(HAS_SHAREDCTYPES, + "requires multiprocessing.sharedctypes") class _TestValue(BaseTestCase): ALLOWED_TYPES = ('processes',) @@ -810,7 +817,6 @@ sv.value = cv[2] - @unittest.skipIf(c_int is None, "requires _ctypes") def test_value(self, raw=False): if raw: values = [self.RawValue(code, value) @@ -829,11 +835,9 @@ for sv, cv in zip(values, self.codes_values): self.assertEqual(sv.value, cv[2]) - @unittest.skipIf(c_int is None, "requires _ctypes") def test_rawvalue(self): self.test_value(raw=True) - @unittest.skipIf(c_int is None, "requires _ctypes") def test_getobj_getlock(self): val1 = self.Value('i', 5) lock1 = val1.get_lock() @@ -860,6 +864,8 @@ self.assertFalse(hasattr(arr5, 'get_obj')) +@unittest.skipUnless(HAS_SHAREDCTYPES, + "requires multiprocessing.sharedctypes") class _TestArray(BaseTestCase): ALLOWED_TYPES = ('processes',) @@ -868,7 +874,6 @@ for i in range(1, len(seq)): seq[i] += seq[i-1] - @unittest.skipIf(c_int is None, "requires _ctypes") def test_array(self, raw=False): seq = [680, 626, 934, 821, 150, 233, 548, 982, 714, 831] if raw: @@ -892,11 +897,9 @@ self.assertEqual(list(arr[:]), seq) - @unittest.skipIf(c_int is None, "requires _ctypes") def test_rawarray(self): self.test_array(raw=True) - @unittest.skipIf(c_int is None, "requires _ctypes") def test_getobj_getlock_obj(self): arr1 = self.Array('i', list(range(10))) lock1 = arr1.get_lock()