Skip to content

Commit 0528290

Browse files
committed
Correct Issue#1561: test_mailbox failed on Windows.
Open all text files with newline='', this is the only way to have consistent offsets.
1 parent 3e83fed commit 0528290

2 files changed

Lines changed: 18 additions & 19 deletions

File tree

Lib/mailbox.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ def __setitem__(self, key, message):
311311
def get_message(self, key):
312312
"""Return a Message representation or raise a KeyError."""
313313
subpath = self._lookup(key)
314-
f = open(os.path.join(self._path, subpath), 'r')
314+
f = open(os.path.join(self._path, subpath), 'r', newline='')
315315
try:
316316
if self._factory:
317317
msg = self._factory(f)
@@ -328,15 +328,15 @@ def get_message(self, key):
328328

329329
def get_string(self, key):
330330
"""Return a string representation or raise a KeyError."""
331-
f = open(os.path.join(self._path, self._lookup(key)), 'r')
331+
f = open(os.path.join(self._path, self._lookup(key)), 'r', newline='')
332332
try:
333333
return f.read()
334334
finally:
335335
f.close()
336336

337337
def get_file(self, key):
338338
"""Return a file-like representation or raise a KeyError."""
339-
f = open(os.path.join(self._path, self._lookup(key)), 'r')
339+
f = open(os.path.join(self._path, self._lookup(key)), 'r', newline='')
340340
return _ProxyFile(f)
341341

342342
def iterkeys(self):
@@ -502,15 +502,15 @@ def __init__(self, path, factory=None, create=True):
502502
"""Initialize a single-file mailbox."""
503503
Mailbox.__init__(self, path, factory, create)
504504
try:
505-
f = open(self._path, 'r+')
505+
f = open(self._path, 'r+', newline='')
506506
except IOError as e:
507507
if e.errno == errno.ENOENT:
508508
if create:
509-
f = open(self._path, 'w+')
509+
f = open(self._path, 'w+', newline='')
510510
else:
511511
raise NoSuchMailboxError(self._path)
512512
elif e.errno == errno.EACCES:
513-
f = open(self._path, 'r')
513+
f = open(self._path, 'r', newline='')
514514
else:
515515
raise
516516
self._file = f
@@ -866,7 +866,7 @@ def __setitem__(self, key, message):
866866
"""Replace the keyed message; raise KeyError if it doesn't exist."""
867867
path = os.path.join(self._path, str(key))
868868
try:
869-
f = open(path, 'r+')
869+
f = open(path, 'r+', newline='')
870870
except IOError as e:
871871
if e.errno == errno.ENOENT:
872872
raise KeyError('No message with key: %s' % key)
@@ -890,9 +890,9 @@ def get_message(self, key):
890890
"""Return a Message representation or raise a KeyError."""
891891
try:
892892
if self._locked:
893-
f = open(os.path.join(self._path, str(key)), 'r+')
893+
f = open(os.path.join(self._path, str(key)), 'r+', newline='')
894894
else:
895-
f = open(os.path.join(self._path, str(key)), 'r')
895+
f = open(os.path.join(self._path, str(key)), 'r', newline='')
896896
except IOError as e:
897897
if e.errno == errno.ENOENT:
898898
raise KeyError('No message with key: %s' % key)
@@ -917,9 +917,9 @@ def get_string(self, key):
917917
"""Return a string representation or raise a KeyError."""
918918
try:
919919
if self._locked:
920-
f = open(os.path.join(self._path, str(key)), 'r+')
920+
f = open(os.path.join(self._path, str(key)), 'r+', newline='')
921921
else:
922-
f = open(os.path.join(self._path, str(key)), 'r')
922+
f = open(os.path.join(self._path, str(key)), 'r', newline='')
923923
except IOError as e:
924924
if e.errno == errno.ENOENT:
925925
raise KeyError('No message with key: %s' % key)
@@ -939,7 +939,7 @@ def get_string(self, key):
939939
def get_file(self, key):
940940
"""Return a file-like representation or raise a KeyError."""
941941
try:
942-
f = open(os.path.join(self._path, str(key)), 'r')
942+
f = open(os.path.join(self._path, str(key)), 'r', newline='')
943943
except IOError as e:
944944
if e.errno == errno.ENOENT:
945945
raise KeyError('No message with key: %s' % key)
@@ -1017,7 +1017,7 @@ def remove_folder(self, folder):
10171017
def get_sequences(self):
10181018
"""Return a name-to-key-list dictionary to define each sequence."""
10191019
results = {}
1020-
f = open(os.path.join(self._path, '.mh_sequences'), 'r')
1020+
f = open(os.path.join(self._path, '.mh_sequences'), 'r', newline='')
10211021
try:
10221022
all_keys = set(self.keys())
10231023
for line in f:
@@ -1043,7 +1043,7 @@ def get_sequences(self):
10431043

10441044
def set_sequences(self, sequences):
10451045
"""Set sequences using the given name-to-key-list dictionary."""
1046-
f = open(os.path.join(self._path, '.mh_sequences'), 'r+')
1046+
f = open(os.path.join(self._path, '.mh_sequences'), 'r+', newline='')
10471047
try:
10481048
os.close(os.open(f.name, os.O_WRONLY | os.O_TRUNC))
10491049
for name, keys in sequences.items():
@@ -1904,7 +1904,7 @@ def _create_carefully(path):
19041904
"""Create a file if it doesn't exist and open for reading and writing."""
19051905
fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDWR)
19061906
try:
1907-
return open(path, 'r+')
1907+
return open(path, 'r+', newline='')
19081908
finally:
19091909
os.close(fd)
19101910

@@ -2072,7 +2072,7 @@ def next(self):
20722072
if not self.boxes:
20732073
return None
20742074
fn = self.boxes.pop()
2075-
fp = open(os.path.join(self.dirname, fn))
2075+
fp = open(os.path.join(self.dirname, fn), newline='')
20762076
msg = self.factory(fp)
20772077
try:
20782078
msg._mh_msgno = fn

Lib/test/test_mailbox.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -410,8 +410,7 @@ def test_dump_message(self):
410410
_sample_message, io.StringIO(_sample_message)):
411411
output = io.StringIO()
412412
self._box._dump_message(input, output)
413-
self.assertEqual(output.getvalue(),
414-
_sample_message.replace('\n', os.linesep))
413+
self.assertEqual(output.getvalue(), _sample_message)
415414
output = io.StringIO()
416415
self.assertRaises(TypeError,
417416
lambda: self._box._dump_message(None, output))
@@ -757,7 +756,7 @@ def test_add_and_close(self):
757756
self._box._file.seek(0)
758757
contents = self._box._file.read()
759758
self._box.close()
760-
self.assertEqual(contents, open(self._path, 'r').read())
759+
self.assertEqual(contents, open(self._path, 'r', newline='').read())
761760
self._box = self._factory(self._path)
762761

763762
def test_lock_conflict(self):

0 commit comments

Comments
 (0)