]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-105751: Reenable disable test_ctypes tests (#105818)
authorVictor Stinner <vstinner@python.org>
Thu, 15 Jun 2023 09:36:41 +0000 (11:36 +0200)
committerGitHub <noreply@github.com>
Thu, 15 Jun 2023 09:36:41 +0000 (09:36 +0000)
Reenable 3 tests:

* test_overflow()
* test_basic_wstrings()
* test_toolong()

Lib/test/test_ctypes/test_memfunctions.py
Lib/test/test_ctypes/test_strings.py

index 2ff95f619e089513e2734a54c255cdf8b94691d3..112b27ba48e07e638c3a5b1e9d9a283420497bbb 100644 (file)
@@ -9,16 +9,15 @@ from ctypes import (POINTER, sizeof, cast,
 
 
 class MemFunctionsTest(unittest.TestCase):
-    @unittest.skip('test disabled')
     def test_overflow(self):
         # string_at and wstring_at must use the Python calling
         # convention (which acquires the GIL and checks the Python
         # error flag).  Provoke an error and catch it; see also issue
-        # #3554: <http://bugs.python.org/issue3554>
+        # gh-47804.
         self.assertRaises((OverflowError, MemoryError, SystemError),
-                          lambda: wstring_at(u"foo", sys.maxint - 1))
+                          lambda: wstring_at(u"foo", sys.maxsize - 1))
         self.assertRaises((OverflowError, MemoryError, SystemError),
-                          lambda: string_at("foo", sys.maxint - 1))
+                          lambda: string_at("foo", sys.maxsize - 1))
 
     def test_memmove(self):
         # large buffers apparently increase the chance that the memory
index 13d4000ea033c403ac9ef8126b9b76a440bdd3c0..3ecc6fe180adf7f1a3efe8b76989f928ce2c4d88 100644 (file)
@@ -1,5 +1,6 @@
 import unittest
-from ctypes import create_string_buffer, sizeof, byref, c_char, c_wchar
+from ctypes import (create_string_buffer, create_unicode_buffer,
+                    sizeof, byref, c_char, c_wchar)
 
 
 class StringArrayTestCase(unittest.TestCase):
@@ -88,41 +89,35 @@ class WStringTestCase(unittest.TestCase):
         repr(byref(c_wchar("x")))
         c_wchar("x")
 
-    @unittest.skip('test disabled')
     def test_basic_wstrings(self):
-        cs = c_wstring("abcdef")
-
-        # XXX This behaviour is about to change:
-        # len returns the size of the internal buffer in bytes.
-        # This includes the terminating NUL character.
-        self.assertEqual(sizeof(cs), 14)
-
-        # The value property is the string up to the first terminating NUL.
+        cs = create_unicode_buffer("abcdef")
         self.assertEqual(cs.value, "abcdef")
-        self.assertEqual(c_wstring("abc\000def").value, "abc")
 
-        self.assertEqual(c_wstring("abc\000def").value, "abc")
+        # value can be changed
+        cs.value = "abc"
+        self.assertEqual(cs.value, "abc")
+
+        # string is truncated at NUL character
+        cs.value = "def\0z"
+        self.assertEqual(cs.value, "def")
 
-        # The raw property is the total buffer contents:
-        self.assertEqual(cs.raw, "abcdef\000")
-        self.assertEqual(c_wstring("abc\000def").raw, "abc\000def\000")
+        self.assertEqual(create_unicode_buffer("abc\0def").value, "abc")
 
-        # We can change the value:
-        cs.value = "ab"
-        self.assertEqual(cs.value, "ab")
-        self.assertEqual(cs.raw, "ab\000\000\000\000\000")
+        # created with an empty string
+        cs = create_unicode_buffer(3)
+        self.assertEqual(cs.value, "")
 
-        self.assertRaises(TypeError, c_wstring, "123")
-        self.assertRaises(ValueError, c_wstring, 0)
+        cs.value = "abc"
+        self.assertEqual(cs.value, "abc")
 
-    @unittest.skip('test disabled')
     def test_toolong(self):
-        cs = c_wstring("abcdef")
-        # Much too long string:
-        self.assertRaises(ValueError, setattr, cs, "value", "123456789012345")
+        cs = create_unicode_buffer("abc")
+        with self.assertRaises(ValueError):
+            cs.value = "abcdef"
 
-        # One char too long values:
-        self.assertRaises(ValueError, setattr, cs, "value", "1234567")
+        cs = create_unicode_buffer(4)
+        with self.assertRaises(ValueError):
+            cs.value = "abcdef"
 
 
 def run_test(rep, msg, func, arg):