Commit 003d362
pythongh-152415: Exercise curses non-ASCII tests under 8-bit locale encodings (pythonGH-152416)
The non-ASCII tests only exercised what the runner's locale could encode (in
practice UTF-8). Add 8-bit-encoding cases to the character and string I/O
tests, each guarded by the existing encodability check: ASCII, a character
common to the Latin encodings ('é'), and ones distinctive to a single encoding
(byte 0xA4 is '¤' in ISO-8859-1, '€' in ISO-8859-15, 'є' in KOI8-U). Run the
whole suite under different locales to cover them; unrepresentable cases skip.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* pythongh-152415: Verify character output round-trips in test_output_character
Read each written character back with in_wch() or instr() rather than
inch(), which on a wide build returns the low byte of the code point
instead of the locale-encoded byte and so mangles a non-ASCII character
of an 8-bit locale. This lets the int-argument cases cover '€'/'є', and
adds matching coverage for the str argument.
insch() with an int byte > 127 is checked only for Latin-1: on a wide
build ncurses winsch stores a printable byte directly as a code point
instead of decoding it through the locale.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 87ac0bc commit 003d362
1 file changed
Lines changed: 265 additions & 38 deletions
0 commit comments