Make pylint happy with change d1d2d953b5016b465.
[riscv-tests.git] / debug / testlib.py
index 2fd978cc283f5dbc502c32cdb96efb82302d33da..1d46b6c4a59cd93279595bba63a8115b780007d9 100644 (file)
@@ -299,7 +299,13 @@ class Openocd(object):
 
     def __del__(self):
         try:
-            self.process.kill()
+            self.process.terminate()
+            start = time.time()
+            while time.time() < start + 10000:
+                if self.process.poll():
+                    break
+            else:
+                self.process.kill()
             self.process.wait()
         except (OSError, AttributeError):
             pass
@@ -660,6 +666,8 @@ def run_tests(parsed, target, todo):
             result = instance.run()
             log_fd.write("Result: %s\n" % result)
             log_fd.write("Logfile: %s\n" % log_name)
+            log_fd.write("Reproduce: %s %s %s\n" % (sys.argv[0], parsed.target,
+                name))
         finally:
             sys.stdout = real_stdout
             log_fd.write("Time elapsed: %.2fs\n" % (time.time() - start))
@@ -713,12 +721,15 @@ def header(title, dash='-', length=78):
     else:
         print dash * length
 
-def print_log(path):
-    header(path)
-    for l in open(path, "r"):
+def print_log_handle(name, handle):
+    header(name)
+    for l in handle:
         sys.stdout.write(l)
     print
 
+def print_log(path):
+    print_log_handle(path, open(path, "r"))
+
 class BaseTest(object):
     compiled = {}
 
@@ -814,10 +825,15 @@ class BaseTest(object):
             return result
 
         finally:
+            # Get handles to logs before the files are deleted.
+            logs = []
             for log in self.logs:
-                print_log(log)
-            header("End of logs")
+                logs.append((log, open(log, "r")))
+
             self.classTeardown()
+            for name, handle in logs:
+                print_log_handle(name, handle)
+            header("End of logs")
 
         if not result:
             result = 'pass'