diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-07-24 00:41:54 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-07-24 00:41:54 (GMT) |
commit | 5a24d82941cec6c207433d75c1120bf4a8438793 (patch) | |
tree | f6ff4dc8a76ff2225cf2bd371088733e5f1ef1f3 | |
parent | 8dbd8573e513248ca4c105d0f580f47e79ab9ec8 (diff) | |
parent | 0e3c5a828e65f4f5821dad0e7b0ff4ca9f62f9d3 (diff) | |
download | cpython-5a24d82941cec6c207433d75c1120bf4a8438793.zip cpython-5a24d82941cec6c207433d75c1120bf4a8438793.tar.gz cpython-5a24d82941cec6c207433d75c1120bf4a8438793.tar.bz2 |
Add a test for issue #1813: getlocale() failing under a Turkish locale
(not a problem under 3.x)
-rw-r--r-- | Lib/test/test_codecs.py | 14 | ||||
-rw-r--r-- | Lib/test/test_locale.py | 13 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Python/codecs.c | 2 |
4 files changed, 30 insertions, 1 deletions
diff --git a/Lib/test/test_codecs.py b/Lib/test/test_codecs.py index c0450e7..247e2b8 100644 --- a/Lib/test/test_codecs.py +++ b/Lib/test/test_codecs.py @@ -1,6 +1,7 @@ from test import support import unittest import codecs +import locale import sys, _testcapi, io class Queue(object): @@ -1230,6 +1231,19 @@ class CodecsModuleTest(unittest.TestCase): self.assertRaises(TypeError, codecs.getwriter) self.assertRaises(LookupError, codecs.getwriter, "__spam__") + def test_lookup_issue1813(self): + # Issue #1813: under Turkish locales, lookup of some codecs failed + # because 'I' is lowercased as "ı" (dotless i) + oldlocale = locale.getlocale(locale.LC_CTYPE) + self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale) + try: + locale.setlocale(locale.LC_CTYPE, 'tr_TR') + except locale.Error: + # Unsupported locale on this system + self.skipTest('test needs Turkish locale') + c = codecs.lookup('ASCII') + self.assertEqual(c.name, 'ascii') + class StreamReaderTest(unittest.TestCase): def setUp(self): diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py index e959343..5155923 100644 --- a/Lib/test/test_locale.py +++ b/Lib/test/test_locale.py @@ -391,6 +391,19 @@ class TestMiscellaneous(unittest.TestCase): # crasher from bug #7419 self.assertRaises(locale.Error, locale.setlocale, 12345) + def test_getsetlocale_issue1813(self): + # Issue #1813: setting and getting the locale under a Turkish locale + oldlocale = locale.getlocale() + self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale) + try: + locale.setlocale(locale.LC_CTYPE, 'tr_TR') + except locale.Error: + # Unsupported locale on this system + self.skipTest('test needs Turkish locale') + loc = locale.getlocale() + locale.setlocale(locale.LC_CTYPE, loc) + self.assertEqual(loc, locale.getlocale()) + def test_main(): tests = [ @@ -237,6 +237,8 @@ Core and Builtins Library ------- +- Issue #1813: Fix codec lookup under Turkish locales. + - Issue #12591: Improve support of "universal newlines" in the subprocess module: the piped streams can now be properly read from or written to. diff --git a/Python/codecs.c b/Python/codecs.c index 45d9929..1a3e457 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -69,7 +69,7 @@ PyObject *normalizestring(const char *string) if (ch == ' ') ch = '-'; else - ch = tolower(Py_CHARMASK(ch)); + ch = Py_TOLOWER(Py_CHARMASK(ch)); p[i] = ch; } p[i] = '\0'; |