[Python-checkins] r72404 - in python/trunk: Lib/test/test_codecs.py Modules/_codecsmodule.c
walter.doerwald
python-checkins at python.org
Wed May 6 16:28:25 CEST 2009
Author: walter.doerwald
Date: Wed May 6 16:28:24 2009
New Revision: 72404
Log:
Issue 3739: The unicode-internal encoder now reports the number of *characters*
consumed like any other encoder (instead of the number of bytes).
Modified:
python/trunk/Lib/test/test_codecs.py
python/trunk/Modules/_codecsmodule.c
Modified: python/trunk/Lib/test/test_codecs.py
==============================================================================
--- python/trunk/Lib/test/test_codecs.py (original)
+++ python/trunk/Lib/test/test_codecs.py Wed May 6 16:28:24 2009
@@ -802,6 +802,12 @@
"UnicodeInternalTest")
self.assertEquals((u"ab", 12), ignored)
+ def test_encode_length(self):
+ # Issue 3739
+ encoder = codecs.getencoder("unicode_internal")
+ self.assertEquals(encoder(u"a")[1], 1)
+ self.assertEquals(encoder(u"\xe9\u0142")[1], 2)
+
# From http://www.gnu.org/software/libidn/draft-josefsson-idn-test-vectors.html
nameprep_tests = [
# 3.1 Map to nothing.
@@ -1292,8 +1298,7 @@
name = "latin_1"
self.assertEqual(encoding.replace("_", "-"), name.replace("_", "-"))
(bytes, size) = codecs.getencoder(encoding)(s)
- if encoding != "unicode_internal":
- self.assertEqual(size, len(s), "%r != %r (encoding=%r)" % (size, len(s), encoding))
+ self.assertEqual(size, len(s), "%r != %r (encoding=%r)" % (size, len(s), encoding))
(chars, size) = codecs.getdecoder(encoding)(bytes)
self.assertEqual(chars, s, "%r != %r (encoding=%r)" % (chars, s, encoding))
Modified: python/trunk/Modules/_codecsmodule.c
==============================================================================
--- python/trunk/Modules/_codecsmodule.c (original)
+++ python/trunk/Modules/_codecsmodule.c Wed May 6 16:28:24 2009
@@ -646,7 +646,7 @@
data = PyUnicode_AS_DATA(obj);
size = PyUnicode_GET_DATA_SIZE(obj);
return codec_tuple(PyString_FromStringAndSize(data, size),
- size);
+ PyUnicode_GET_SIZE(obj));
}
else {
if (PyObject_AsReadBuffer(obj, (const void **)&data, &size))
More information about the Python-checkins
mailing list