From 06e2a5e05275f814ec179d0c1dc2980cd237a521 Mon Sep 17 00:00:00 2001 From: Guido van Rossum <guido@python.org> Date: Wed, 9 Oct 2002 18:17:06 +0000 Subject: [PATCH] Add special consideration for rlcompleter. As a side effect of initializing GNU readline, setlocale(LC_CTYPE, "") is called, which changes the <ctype.h> macros to use the "default" locale (which isn't the *initial* locale -- the initial locale is the "C" locale in which only ASCII characters are printable). When the default locale is e.g. Latin-1, the repr() of string objects can include 8-bit characters with the high bit set; I believe this is due to the recent PRINT_MULTIBYTE_STRING changes to stringobject.c. This in turn screws up test_pyexpat and test_rotor, which depend on the repr() of 8-bit strings with high bit characters. The solution (for now) is to force the LC_CTYPE locale to "C" after importing rlcompleter. This is the locale required by the test suite anyway. --- Lib/test/test___all__.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py index 0a988facf6..a0ffa6524c 100644 --- a/Lib/test/test___all__.py +++ b/Lib/test/test___all__.py @@ -132,7 +132,6 @@ check_all("regsub") check_all("repr") check_all("rexec") check_all("rfc822") -check_all("rlcompleter") check_all("robotparser") check_all("sched") check_all("sgmllib") @@ -161,3 +160,15 @@ check_all("weakref") check_all("webbrowser") check_all("xdrlib") check_all("zipfile") + +# rlcompleter needs special consideration; it import readline which +# initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-( +try: + check_all("rlcompleter") +finally: + try: + import locale + except ImportError: + pass + else: + locale.setlocale(locale.LC_CTYPE, 'C') -- 2.40.0