From a6026c6a0ff6835fb2bdd0c904cb4be8b4b5c19f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Sun, 22 Sep 2002 09:01:08 +0000 Subject: Back out multifile.py 1.19 and 1.20. Fixes #514676. --- Lib/multifile.py | 17 +----------- Lib/test/test_multifile.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 16 deletions(-) create mode 100644 Lib/test/test_multifile.py diff --git a/Lib/multifile.py b/Lib/multifile.py index 4ef3644..23d9d31 100644 --- a/Lib/multifile.py +++ b/Lib/multifile.py @@ -41,7 +41,6 @@ class MultiFile: self.stack = [] # Grows down self.level = 0 self.last = 0 - self.readahead = "" if seekable: self.seekable = 1 self.start = self.fp.tell() @@ -50,7 +49,7 @@ class MultiFile: def tell(self): if self.level > 0: return self.lastpos - return self.fp.tell() - len(self.readahead) - self.start + return self.fp.tell() - self.start def seek(self, pos, whence=0): here = self.tell() @@ -68,22 +67,8 @@ class MultiFile: self.fp.seek(pos + self.start) self.level = 0 self.last = 0 - self.readahead = "" def readline(self): - if not self.readahead: - self.readahead = self._readline() - line = self.readahead - if line: - self.readahead = self._readline() - if not self.readahead: - if line[-2:] == "\r\n": - line = line[:-2] - elif line[-1:] == "\n": - line = line[:-1] - return line - - def _readline(self): if self.level > 0: return '' line = self.fp.readline() diff --git a/Lib/test/test_multifile.py b/Lib/test/test_multifile.py new file mode 100644 index 0000000..8f70347 --- /dev/null +++ b/Lib/test/test_multifile.py @@ -0,0 +1,66 @@ +import mimetools +import multifile +import cStringIO + +msg = """Mime-Version: 1.0 +Content-Type: multipart/mixed; + boundary="=====================_590453667==_" +X-OriginalArrivalTime: 05 Feb 2002 03:43:23.0310 (UTC) FILETIME=[42D88CE0:01C1ADF7] + +--=====================_590453667==_ +Content-Type: multipart/alternative; + boundary="=====================_590453677==_.ALT" + +--=====================_590453677==_.ALT +Content-Type: text/plain; charset="us-ascii"; format=flowed + +test A +--=====================_590453677==_.ALT +Content-Type: text/html; charset="us-ascii" + + +test B + +--=====================_590453677==_.ALT-- + +--=====================_590453667==_ +Content-Type: text/plain; charset="us-ascii" +Content-Disposition: attachment; filename="att.txt" + +Attached Content. +Attached Content. +Attached Content. +Attached Content. + +--=====================_590453667==_-- + +""" + +boundaries = 0 +linecount = 0 + +def getMIMEMsg(mf): + global boundaries, linecount + msg = mimetools.Message(mf) + + #print "TYPE: %s" % msg.gettype() + if msg.getmaintype() == 'multipart': + boundary = msg.getparam("boundary") + boundaries += 1 + + mf.push(boundary) + while mf.next(): + getMIMEMsg(mf) + mf.pop() + else: + lines = mf.readlines() + linecount += len(lines) + +def main(): + f = cStringIO.StringIO(msg) + getMIMEMsg(multifile.MultiFile(f)) + assert boundaries == 2 + assert linecount == 9 + +if __name__ == '__main__': + main() -- cgit v0.12