Skip to content

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

Merged
vstinner merged 1 commit into
python:mainfrom
vstinner:test_writer_with_assert
Oct 2, 2026
Merged

vstinner merged 1 commit into
python:mainfrom
vstinner:test_writer_with_assert

Conversation

@vstinner

@vstinner vstinner commented Oct 2, 2026 •

Copy link
Copy Markdown
Member

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

…ertions

If Python is built in release mode with assertions,
PyUnicode_FromKindAndData() and PyUnicodeWriter_Finish() fail with an
assertion error on invalid characters.
@bedevere-app bedevere-app Bot added awaiting core review tests Tests in the Lib/test dir labels Oct 2, 2026
@vstinner
vstinner enabled auto-merge (squash) October 2, 2026 14:49
@vstinner
vstinner merged commit 35bdbca into python:main Oct 2, 2026
54 checks passed
@vstinner
vstinner deleted the test_writer_with_assert branch October 2, 2026 15:22
vstinner added a commit that referenced this pull request Oct 16, 2026
…) (#159524)

* gh-158445: Detect invalid UCS4 characters in debug mode (#158502)

In debug mode, PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND) and
PyUnicodeWriter_WriteUCS4() now raise a SystemError if a character is
not in range [U+0000; U+10ffff], instead of creating an invalid str
object.

In release mode, PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND)
raises a SystemError if the size is 1.

* In debug mode, unicode_char() no longer fails with an assertion
  error if the character is invalid. Instead, raise SystemError.
* Add tests on invalid UCS-4 characters.
* Add _testinternalcapi._Py_MAX_UNICODE.
* Add unicode_invalid_character() helper function.

(cherry picked from commit a14a4a6)

* 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.

(cherry picked from commit 35bdbca)
vstinner added a commit that referenced this pull request Oct 16, 2026
…) (#159524) (#159540)

[3.15] gh-158445: Detect invalid UCS4 characters in debug mode (#158502) (#159524)

* gh-158445: Detect invalid UCS4 characters in debug mode (#158502)

In debug mode, PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND) and
PyUnicodeWriter_WriteUCS4() now raise a SystemError if a character is
not in range [U+0000; U+10ffff], instead of creating an invalid str
object.

In release mode, PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND)
raises a SystemError if the size is 1.

* In debug mode, unicode_char() no longer fails with an assertion
  error if the character is invalid. Instead, raise SystemError.
* Add tests on invalid UCS-4 characters.
* Add unicode_invalid_character() helper function.

(cherry picked from commit a14a4a6)

* 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.

(cherry picked from commit 35bdbca)
(cherry picked from commit 2c23505)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip news tests Tests in the Lib/test dir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant