[Python-checkins] r75541 - in python/branches/release31-maint: Lib/locale.py Lib/test/test_locale.py Misc/ACKS Misc/NEWS Modules/_localemodule.c PC/pyconfig.h

antoine.pitrou python-checkins at python.org
Mon Oct 19 21:47:59 CEST 2009


Author: antoine.pitrou
Date: Mon Oct 19 21:47:59 2009
New Revision: 75541
Log:
Merged revisions 75537,75539 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
 r75537 | antoine.pitrou | 2009年10月19日 21:37:25 +0200 (lun., 19 oct. 2009) | 3 lines
 
 egreen is Derk Drukker + fix NEWS formatting
........
 r75539 | antoine.pitrou | 2009年10月19日 21:43:09 +0200 (lun., 19 oct. 2009) | 4 lines
 
 Issue #7080: locale.strxfrm() raises a MemoryError on 64-bit non-Windows
 platforms, and assorted locale fixes by Derk Drukker.
........
Modified:
 python/branches/release31-maint/ (props changed)
 python/branches/release31-maint/Lib/locale.py
 python/branches/release31-maint/Lib/test/test_locale.py
 python/branches/release31-maint/Misc/ACKS
 python/branches/release31-maint/Misc/NEWS
 python/branches/release31-maint/Modules/_localemodule.c
 python/branches/release31-maint/PC/pyconfig.h
Modified: python/branches/release31-maint/Lib/locale.py
==============================================================================
--- python/branches/release31-maint/Lib/locale.py	(original)
+++ python/branches/release31-maint/Lib/locale.py	Mon Oct 19 21:47:59 2009
@@ -575,14 +575,13 @@
 # returning nothing will crash the
 # interpreter.
 result = 'UTF-8'
-
 setlocale(LC_CTYPE, oldloc)
- return result
 else:
 result = nl_langinfo(CODESET)
 if not result and sys.platform == 'darwin':
 # See above for explanation
 result = 'UTF-8'
+ return result
 
 
 ### Database
Modified: python/branches/release31-maint/Lib/test/test_locale.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_locale.py	(original)
+++ python/branches/release31-maint/Lib/test/test_locale.py	Mon Oct 19 21:47:59 2009
@@ -8,12 +8,10 @@
 
 def get_enUS_locale():
 global enUS_locale
- if sys.platform == 'darwin':
- raise unittest.SkipTest("Locale support on MacOSX is minimal")
 if sys.platform.startswith("win"):
 tlocs = ("En", "English")
 else:
- tlocs = ("en_US.UTF-8", "en_US.US-ASCII", "en_US")
+ tlocs = ("en_US.UTF-8", "en_US.ISO8859-1", "en_US.US-ASCII", "en_US")
 oldlocale = locale.setlocale(locale.LC_NUMERIC)
 for tloc in tlocs:
 try:
@@ -309,6 +307,39 @@
 grouping=True, international=True)
 
 
+class TestCollation(unittest.TestCase):
+ # Test string collation functions
+
+ def test_strcoll(self):
+ self.assertLess(locale.strcoll('a', 'b'), 0)
+ self.assertEqual(locale.strcoll('a', 'a'), 0)
+ self.assertGreater(locale.strcoll('b', 'a'), 0)
+
+ def test_strxfrm(self):
+ self.assertLess(locale.strxfrm('a'), locale.strxfrm('b'))
+
+
+class TestEnUSCollation(BaseLocalizedTest, TestCollation):
+ # Test string collation functions with a real English locale
+
+ locale_type = locale.LC_ALL
+
+ def setUp(self):
+ BaseLocalizedTest.setUp(self)
+ enc = codecs.lookup(locale.getpreferredencoding(False) or 'ascii').name
+ if enc not in ('utf-8', 'iso8859-1', 'cp1252'):
+ raise unittest.SkipTest('encoding not suitable')
+ if enc != 'iso8859-1' and (sys.platform == 'darwin' or
+ sys.platform.startswith('freebsd')):
+ raise unittest.SkipTest('wcscoll/wcsxfrm have known bugs')
+
+ def test_strcoll_with_diacritic(self):
+ self.assertLess(locale.strcoll('à', 'b'), 0)
+
+ def test_strxfrm_with_diacritic(self):
+ self.assertLess(locale.strxfrm('à'), locale.strxfrm('b'))
+
+
 class TestMiscellaneous(unittest.TestCase):
 def test_getpreferredencoding(self):
 # Invoke getpreferredencoding to make sure it does not cause exceptions.
@@ -317,11 +348,10 @@
 # If encoding non-empty, make sure it is valid
 codecs.lookup(enc)
 
- if hasattr(locale, "strcoll"):
- def test_strcoll_3303(self):
- # test crasher from bug #3303
- self.assertRaises(TypeError, locale.strcoll, "a", None)
- self.assertRaises(TypeError, locale.strcoll, b"a", None)
+ def test_strcoll_3303(self):
+ # test crasher from bug #3303
+ self.assertRaises(TypeError, locale.strcoll, "a", None)
+ self.assertRaises(TypeError, locale.strcoll, b"a", None)
 
 
 def test_main():
@@ -331,6 +361,7 @@
 TestEnUSNumberFormatting,
 TestCNumberFormatting,
 TestFrFRNumberFormatting,
+ TestCollation
 ]
 # SkipTest can't be raised inside unittests, handle it manually instead
 try:
@@ -339,7 +370,7 @@
 if verbose:
 print("Some tests will be disabled: %s" % e)
 else:
- tests += [TestNumberFormatting]
+ tests += [TestNumberFormatting, TestEnUSCollation]
 run_unittest(*tests)
 
 if __name__ == '__main__':
Modified: python/branches/release31-maint/Misc/ACKS
==============================================================================
--- python/branches/release31-maint/Misc/ACKS	(original)
+++ python/branches/release31-maint/Misc/ACKS	Mon Oct 19 21:47:59 2009
@@ -184,6 +184,7 @@
 Dima Dorfman
 Cesar Douady
 Dean Draayer
+Derk Drukker
 John DuBois
 Paul Dubois
 Graham Dumpleton
Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Mon Oct 19 21:47:59 2009
@@ -13,7 +13,7 @@
 -----------------
 
 - Issue #7065: Fix a crash in bytes.maketrans and bytearray.maketrans when
- using byte values greater than 127. Patch by egreen.
+ using byte values greater than 127. Patch by Derk Drukker.
 
 - Issue #7019: Raise ValueError when unmarshalling bad long data, instead
 of producing internally inconsistent Python longs.
@@ -30,6 +30,9 @@
 Library
 -------
 
+- Issue #7080: locale.strxfrm() raises a MemoryError on 64-bit non-Windows
+ platforms, and assorted locale fixes by Derk Drukker.
+
 - Issue #5833: Fix extra space character in readline completion with the
 GNU readline library version 6.0.
 
@@ -45,7 +48,7 @@
 is too large to fit in the current precision.
 
 - Issue #6236, #6348: Fix various failures in the I/O library under AIX
- and other platforms, when using a non-gcc compiler. Patch by egreen.
+ and other platforms, when using a non-gcc compiler. Patch by Derk Drukker.
 
 - Issue #6954: Fixed crash when using DISTUTILS_DEBUG flag in Distutils.
 
Modified: python/branches/release31-maint/Modules/_localemodule.c
==============================================================================
--- python/branches/release31-maint/Modules/_localemodule.c	(original)
+++ python/branches/release31-maint/Modules/_localemodule.c	Mon Oct 19 21:47:59 2009
@@ -9,6 +9,7 @@
 
 ******************************************************************/
 
+#define PY_SSIZE_T_CLEAN
 #include "Python.h"
 
 #include <stdio.h>
@@ -315,7 +316,7 @@
 result = PyUnicode_FromWideChar(buf, n2);
 exit:
 if (buf) PyMem_Free(buf);
-#ifdef HAVE_USABLE_WCHAR_T
+#ifndef HAVE_USABLE_WCHAR_T
 PyMem_Free(s);
 #endif
 return result;
Modified: python/branches/release31-maint/PC/pyconfig.h
==============================================================================
--- python/branches/release31-maint/PC/pyconfig.h	(original)
+++ python/branches/release31-maint/PC/pyconfig.h	Mon Oct 19 21:47:59 2009
@@ -647,6 +647,11 @@
 #define HAVE_WCSCOLL 1
 #endif
 
+/* Define to 1 if you have the `wcsxfrm' function. */
+#ifndef MS_WINCE
+#define HAVE_WCSXFRM 1
+#endif
+
 /* Define if you have the <dlfcn.h> header file. */
 /* #undef HAVE_DLFCN_H */
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /