diff options
-rwxr-xr-x | script/land.py | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/script/land.py b/script/land.py index 95da14ee2d..27dfaeed9c 100755 --- a/script/land.py +++ b/script/land.py @@ -4,6 +4,7 @@ # Copyright Jelmer Vernooij 2010 # released under GNU GPL v3 or later +from cStringIO import StringIO import fcntl from subprocess import call, check_call, Popen, PIPE import os, tarfile, sys, time @@ -15,6 +16,7 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../lib/subunit/pytho import subunit import testtools import subunithelper +from email.mime.application import MIMEApplication from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart @@ -197,7 +199,6 @@ class SubunitTreeStageBuilder(TreeStageBuilder): except IOError: return None else: - self.tree.stdout.write(data) self.buffered += data buffered = "" for l in self.buffered.splitlines(True): @@ -275,19 +276,6 @@ class TreeBuilder(object): for path, name, mime_type in self.logfiles: os.unlink(path) - def attach_logs(self, outer): - for path, name, mime_type in self.logfiles: - assert mime_type.startswith("text/") - f = open(path, 'r') - try: - f.seek(0) - msg = MIMEText(f.read(), mime_type[len("text/"):]) - finally: - f.close() - msg.add_header('Content-Disposition', 'attachment', - filename=name) - outer.attach(msg) - @property def status(self): return self.stage.status @@ -383,8 +371,8 @@ class BuildList(object): self.kill_kids() return (0, None, None, None, "All OK") - def tarlogs(self, fname): - tar = tarfile.open(fname, "w:gz") + def tarlogs(self, name=None, fileobj=None): + tar = tarfile.open(name=name, fileobj=fileobj, mode="w:gz") for b in self.tlist: for (path, name, mime_type) in b.logfiles: tar.add(path, arcname=name) @@ -392,9 +380,13 @@ class BuildList(object): tar.add("autobuild.log") tar.close() - def attach_logs(self, msg): - for b in self.tlist: - b.attach_logs(msg) + def attach_logs(self, outer): + f = StringIO() + self.tarlogs(fileobj=f) + msg = MIMEApplication(f.getvalue(), "x-gzip") + msg.add_header('Content-Disposition', 'attachment', + filename="logs.tar.gz") + outer.attach(msg) def remove_logs(self): for b in self.tlist: |