summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2002-10-09 18:17:06 (GMT)
committerGuido van Rossum <guido@python.org>2002-10-09 18:17:06 (GMT)
commit06e2a5e05275f814ec179d0c1dc2980cd237a521 (patch)
tree6fcea1556e7d2e309e793fdfec290adeadf18d7e
parent8b10f8988f896754b36c17700bab5e435f943385 (diff)
downloadcpython-06e2a5e05275f814ec179d0c1dc2980cd237a521.zip
cpython-06e2a5e05275f814ec179d0c1dc2980cd237a521.tar.gz
cpython-06e2a5e05275f814ec179d0c1dc2980cd237a521.tar.bz2
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.
-rw-r--r--Lib/test/test___all__.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py
index 0a988fa..a0ffa65 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')