mirror of
https://github.com/python/cpython.git
synced 2025-08-21 17:25:34 +00:00
Merged revisions 78461,78482 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r78461 | florent.xicluna | 2010-02-26 11:40:58 +0100 (ven, 26 fév 2010) | 2 lines #691291: codecs.open() should not convert end of lines on reading and writing. ........ r78482 | florent.xicluna | 2010-02-27 12:19:18 +0100 (sam, 27 fév 2010) | 2 lines Add entry for issue #691291. ........
This commit is contained in:
parent
9ea3bbafaa
commit
c92fc8261d
3 changed files with 27 additions and 4 deletions
|
@ -858,10 +858,15 @@ def open(filename, mode='rb', encoding=None, errors='strict', buffering=1):
|
||||||
parameter.
|
parameter.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if encoding is not None and \
|
if encoding is not None:
|
||||||
'b' not in mode:
|
if 'U' in mode:
|
||||||
# Force opening of the file in binary mode
|
# No automatic conversion of '\n' is done on reading and writing
|
||||||
mode = mode + 'b'
|
mode = mode.strip().replace('U', '')
|
||||||
|
if mode[:1] not in set('rwa'):
|
||||||
|
mode = 'r' + mode
|
||||||
|
if 'b' not in mode:
|
||||||
|
# Force opening of the file in binary mode
|
||||||
|
mode = mode + 'b'
|
||||||
file = __builtin__.open(filename, mode, buffering)
|
file = __builtin__.open(filename, mode, buffering)
|
||||||
if encoding is None:
|
if encoding is None:
|
||||||
return file
|
return file
|
||||||
|
|
|
@ -437,6 +437,21 @@ class UTF16Test(ReadTest):
|
||||||
def test_errors(self):
|
def test_errors(self):
|
||||||
self.assertRaises(UnicodeDecodeError, codecs.utf_16_decode, "\xff", "strict", True)
|
self.assertRaises(UnicodeDecodeError, codecs.utf_16_decode, "\xff", "strict", True)
|
||||||
|
|
||||||
|
def test_bug691291(self):
|
||||||
|
# Files are always opened in binary mode, even if no binary mode was
|
||||||
|
# specified. This means that no automatic conversion of '\n' is done
|
||||||
|
# on reading and writing.
|
||||||
|
s1 = u'Hello\r\nworld\r\n'
|
||||||
|
|
||||||
|
s = s1.encode(self.encoding)
|
||||||
|
try:
|
||||||
|
with open(test_support.TESTFN, 'wb') as fp:
|
||||||
|
fp.write(s)
|
||||||
|
with codecs.open(test_support.TESTFN, 'U', encoding=self.encoding) as reader:
|
||||||
|
self.assertEqual(reader.read(), s1)
|
||||||
|
finally:
|
||||||
|
test_support.unlink(test_support.TESTFN)
|
||||||
|
|
||||||
class UTF16LETest(ReadTest):
|
class UTF16LETest(ReadTest):
|
||||||
encoding = "utf-16-le"
|
encoding = "utf-16-le"
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #691291: codecs.open() should not convert end of lines on reading and
|
||||||
|
writing.
|
||||||
|
|
||||||
- Issue #7975: correct regression in dict methods supported by bsddb.dbshelve.
|
- Issue #7975: correct regression in dict methods supported by bsddb.dbshelve.
|
||||||
|
|
||||||
- Issue #7959: ctypes callback functions are now registered correctly
|
- Issue #7959: ctypes callback functions are now registered correctly
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue