https://github.com/python/cpython/commit/35bdbcad63d629e7e4209117411241d8ac0bd6cf
commit: 35bdbcad63d629e7e4209117411241d8ac0bd6cf
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2026-10-02T15:22:13Z
summary:

gh-158445: Skip invalid UCS-4 tests if Python is built with assertions (#158604)

If Python is built in release mode with assertions,
PyUnicode_FromKindAndData() and PyUnicodeWriter_Finish() fail with an
assertion error on invalid characters.

files:
M Lib/test/test_capi/test_unicode.py

diff --git a/Lib/test/test_capi/test_unicode.py 
b/Lib/test/test_capi/test_unicode.py
index c5926dce397409..6e2fd13567f5fb 100644
--- a/Lib/test/test_capi/test_unicode.py
+++ b/Lib/test/test_capi/test_unicode.py
@@ -315,6 +315,7 @@ def test_fromkindanddata(self):
 
         # Test invalid UCS-4 string. Create an invalid string in release mode,
         # or raise SystemError in debug mode.
+        built_with_assert = support.built_with_c_assertions()
         for invalid_char in (INVALID_CHAR, MAX_INVALID_CHAR):
             with self.subTest(invalid_char=invalid_char):
                 # Test single character
@@ -325,9 +326,12 @@ def test_fromkindanddata(self):
                 s = 'valid'.encode(enc4) + ucs4_char
                 if support.Py_DEBUG:
                     self.assertRaises(SystemError, fromkindanddata, 4, s)
-                else:
+                elif not built_with_assert :
                     result = fromkindanddata(4, s)
                     assert_invalid_string(self, result)
+                else:
+                    # PyUnicode_FromKindAndData() fails with an assertion error
+                    pass
 
     def test_substring(self):
         """Test PyUnicode_Substring()"""
@@ -2170,6 +2174,7 @@ def test_ucs4(self):
 
         # Invalid UCS-4 characters. Create an invalid string in release mode,
         # or raise SystemError in debug mode.
+        built_with_assert = support.built_with_c_assertions()
         writer = self.create_writer(0)
         for invalid_char in (INVALID_CHAR, MAX_INVALID_CHAR):
             with self.subTest(invalid_char=invalid_char):
@@ -2189,9 +2194,12 @@ def test_ucs4(self):
 
         if support.Py_DEBUG:
             self.assertEqual(writer.finish(), '')
-        else:
+        elif not built_with_assert:
             result = writer.finish()
             assert_invalid_string(self, result)
+        else:
+            # PyUnicodeWriter_Finish() fails with an assertion error
+            pass
 
         # Invalid size
         writer = self.create_writer(0)

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to