]> granicus.if.org Git - python/commitdiff
Improve diagnostic output when an external command returns a non-zero exit
authorFred Drake <fdrake@acm.org>
Sun, 4 Feb 2001 15:20:26 +0000 (15:20 +0000)
committerFred Drake <fdrake@acm.org>
Sun, 4 Feb 2001 15:20:26 +0000 (15:20 +0000)
code, showing the transcript for that command.

This closes SF bug #129740.

Doc/tools/mkhowto

index d326a0940b0192884b1d2ec6655e1d725f80d662..28f18b6950e59ff1dbfc4926a67c31de73fbdd8e 100755 (executable)
@@ -442,6 +442,9 @@ class Job:
             self.warning(
                 "Session transcript and error messages are in %s."
                 % self.log_filename)
+            sys.stderr.write("The relevant lines from the transcript are:\n")
+            sys.stderr.write("-" * 72 + "\n")
+            sys.stderr.writelines(get_run_transcript(self.log_filename))
             sys.exit(rc)
 
     def message(self, msg):
@@ -461,7 +464,23 @@ class Job:
         fp.close()
 
 
+def get_run_transcript(filename):
+    """Return lines from the transcript file for the most recent run() call."""
+    fp = open(filename)
+    lines = fp.readlines()
+    fp.close()
+    lines.reverse()
+    L = []
+    for line in lines:
+        L.append(line)
+        if line[:4] == "+++ ":
+            break
+    L.reverse()
+    return L
+
+
 def safe_unlink(path):
+    """Unlink a file without raising an error if it doesn't exist."""
     try:
         os.unlink(path)
     except os.error: