diff options
author | Victor Stinner <vstinner@python.org> | 2023-06-15 12:22:01 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-15 12:22:01 (GMT) |
commit | 8f10140e74d141a0a894702044e213e6f0690d9c (patch) | |
tree | c743b578bcfe88cc8f36656439151e16cadbb114 | |
parent | 09ce8c3b48f940eb8865330f029b8069854c3106 (diff) | |
download | cpython-8f10140e74d141a0a894702044e213e6f0690d9c.zip cpython-8f10140e74d141a0a894702044e213e6f0690d9c.tar.gz cpython-8f10140e74d141a0a894702044e213e6f0690d9c.tar.bz2 |
gh-105751, test_ctypes: Remove disabled tests (#105826)
* The following tests were disabled since the initial ctypes commit
in 2006, commit babddfca758abe34ff12023f63b18d745fae7ca9:
* Callbacks.test_char_p()
* DeletePointerTestCase.test_X()
* NumberTestCase.test_perf()
* StructureTestCase.test_subclass_creation()
* Tests.test_X() of test_byteswap
* NumberTestCase.test_bool_from_address() was disabled in 2007 by
commit 5dc4fe09b7648f9801558e766b21a3d3b2dcad3b.
* Remove check_perf() and run_test() of test_numbers.
-rw-r--r-- | Lib/test/test_ctypes/test_byteswap.py | 8 | ||||
-rw-r--r-- | Lib/test/test_ctypes/test_callbacks.py | 10 | ||||
-rw-r--r-- | Lib/test/test_ctypes/test_keeprefs.py | 28 | ||||
-rw-r--r-- | Lib/test/test_ctypes/test_numbers.py | 78 | ||||
-rw-r--r-- | Lib/test/test_ctypes/test_structures.py | 9 |
5 files changed, 2 insertions, 131 deletions
diff --git a/Lib/test/test_ctypes/test_byteswap.py b/Lib/test/test_ctypes/test_byteswap.py index 2986e8a..b97b576 100644 --- a/Lib/test/test_ctypes/test_byteswap.py +++ b/Lib/test/test_ctypes/test_byteswap.py @@ -25,14 +25,6 @@ def bin(s): # For Structures and Unions, these types are created on demand. class Test(unittest.TestCase): - @unittest.skip('test disabled') - def test_X(self): - print(sys.byteorder, file=sys.stderr) - for i in range(32): - bits = BITS() - setattr(bits, "i%s" % i, 1) - dump(bits) - def test_slots(self): class BigPoint(BigEndianStructure): __slots__ = () diff --git a/Lib/test/test_ctypes/test_callbacks.py b/Lib/test/test_ctypes/test_callbacks.py index 98341bc..037677e 100644 --- a/Lib/test/test_ctypes/test_callbacks.py +++ b/Lib/test/test_ctypes/test_callbacks.py @@ -8,7 +8,7 @@ import unittest from _ctypes import CTYPES_MAX_ARGCOUNT from ctypes import (CDLL, cdll, Structure, CFUNCTYPE, ArgumentError, POINTER, sizeof, - c_byte, c_ubyte, c_char, c_char_p, + c_byte, c_ubyte, c_char, c_short, c_ushort, c_int, c_uint, c_long, c_longlong, c_ulonglong, c_ulong, c_float, c_double, c_longdouble, py_object) @@ -92,14 +92,6 @@ class Callbacks(unittest.TestCase): self.check_type(c_char, b"x") self.check_type(c_char, b"a") - # disabled: would now (correctly) raise a RuntimeWarning about - # a memory leak. A callback function cannot return a non-integral - # C type without causing a memory leak. - @unittest.skip('test disabled') - def test_char_p(self): - self.check_type(c_char_p, "abc") - self.check_type(c_char_p, "def") - def test_pyobject(self): o = () for o in (), [], object(): diff --git a/Lib/test/test_ctypes/test_keeprefs.py b/Lib/test/test_ctypes/test_keeprefs.py index 92dd1a0..23b03b6 100644 --- a/Lib/test/test_ctypes/test_keeprefs.py +++ b/Lib/test/test_ctypes/test_keeprefs.py @@ -1,5 +1,3 @@ -import gc -import sys import unittest from ctypes import (Structure, POINTER, pointer, _pointer_type_cache, c_char_p, c_int) @@ -101,32 +99,6 @@ class PointerTestCase(unittest.TestCase): self.assertEqual(x._objects, {'1': i}) -class DeletePointerTestCase(unittest.TestCase): - @unittest.skip('test disabled') - def test_X(self): - class X(Structure): - _fields_ = [("p", POINTER(c_char_p))] - x = X() - i = c_char_p("abc def") - print("2?", sys.getrefcount(i)) - x.p = pointer(i) - print("3?", sys.getrefcount(i)) - for i in range(320): - c_int(99) - x.p[0] - print(x.p[0]) - gc.collect() - for i in range(320): - c_int(99) - x.p[0] - print(x.p[0]) - print(x.p.contents) - - x.p[0] = "spam spam" - print("+" * 42) - print(x._objects) - - class PointerToStructure(unittest.TestCase): def test(self): class POINT(Structure): diff --git a/Lib/test/test_ctypes/test_numbers.py b/Lib/test/test_ctypes/test_numbers.py index 7cf0c32..fd318f9 100644 --- a/Lib/test/test_ctypes/test_numbers.py +++ b/Lib/test/test_ctypes/test_numbers.py @@ -3,7 +3,7 @@ import struct import sys import unittest from operator import truth -from ctypes import (byref, sizeof, alignment, _SimpleCData, +from ctypes import (byref, sizeof, alignment, c_char, c_byte, c_ubyte, c_short, c_ushort, c_int, c_uint, c_long, c_ulong, c_longlong, c_ulonglong, c_float, c_double, c_longdouble, c_bool) @@ -70,14 +70,6 @@ class NumberTestCase(unittest.TestCase): self.assertRaises(TypeError, t, "") self.assertRaises(TypeError, t, None) - @unittest.skip('test disabled') - def test_valid_ranges(self): - # invalid values of the correct type - # raise ValueError (not OverflowError) - for t, (l, h) in zip(unsigned_types, unsigned_ranges): - self.assertRaises(ValueError, t, l-1) - self.assertRaises(ValueError, t, h+1) - def test_from_param(self): # the from_param class method attribute always # returns PyCArgObject instances @@ -188,17 +180,6 @@ class NumberTestCase(unittest.TestCase): a[0] = ord('?') self.assertEqual(v.value, b'?') - # array does not support c_bool / 't' - @unittest.skip('test disabled') - def test_bool_from_address(self): - a = array.array(c_bool._type_, [True]) - v = t.from_address(a.buffer_info()[0]) - self.assertEqual(v.value, a[0]) - self.assertEqual(type(v) is t) - a[0] = False - self.assertEqual(v.value, a[0]) - self.assertEqual(type(v) is t) - def test_init(self): # c_int() can be initialized from Python's int, and c_int. # Not from c_long or so, which seems strange, abc should @@ -214,63 +195,6 @@ class NumberTestCase(unittest.TestCase): if (hasattr(t, "__ctype_le__")): self.assertRaises(OverflowError, t.__ctype_le__, big_int) - @unittest.skip('test disabled') - def test_perf(self): - check_perf() - - -class c_int_S(_SimpleCData): - _type_ = "i" - __slots__ = [] - - -def run_test(rep, msg, func, arg=None): - items = range(rep) - from time import perf_counter as clock - if arg is not None: - start = clock() - for i in items: - func(arg); func(arg); func(arg); func(arg); func(arg) - stop = clock() - else: - start = clock() - for i in items: - func(); func(); func(); func(); func() - stop = clock() - print("%15s: %.2f us" % (msg, ((stop-start)*1e6/5/rep))) - - -def check_perf(): - # Construct 5 objects - - REP = 200000 - - run_test(REP, "int()", int) - run_test(REP, "int(999)", int) - run_test(REP, "c_int()", c_int) - run_test(REP, "c_int(999)", c_int) - run_test(REP, "c_int_S()", c_int_S) - run_test(REP, "c_int_S(999)", c_int_S) - -# Python 2.3 -OO, win2k, P4 700 MHz: -# -# int(): 0.87 us -# int(999): 0.87 us -# c_int(): 3.35 us -# c_int(999): 3.34 us -# c_int_S(): 3.23 us -# c_int_S(999): 3.24 us - -# Python 2.2 -OO, win2k, P4 700 MHz: -# -# int(): 0.89 us -# int(999): 0.89 us -# c_int(): 9.99 us -# c_int(999): 10.02 us -# c_int_S(): 9.87 us -# c_int_S(999): 9.85 us - if __name__ == '__main__': -## check_perf() unittest.main() diff --git a/Lib/test/test_ctypes/test_structures.py b/Lib/test/test_ctypes/test_structures.py index 72bec13..f05ee5e 100644 --- a/Lib/test/test_ctypes/test_structures.py +++ b/Lib/test/test_ctypes/test_structures.py @@ -357,15 +357,6 @@ class StructureTestCase(unittest.TestCase): except Exception as detail: return detail.__class__, str(detail) - @unittest.skip('test disabled') - def test_subclass_creation(self): - meta = type(Structure) - # same as 'class X(Structure): pass' - # fails, since we need either a _fields_ or a _abstract_ attribute - cls, msg = self.get_except(meta, "X", (Structure,), {}) - self.assertEqual((cls, msg), - (AttributeError, "class must define a '_fields_' attribute")) - def test_abstract_class(self): class X(Structure): _abstract_ = "something" |