sw:vec: Update test_runner timeout message

Use customized message to print out the full execution log for better
debugging.

Change-Id: Ie8b59973dd55c7f9ca0a3ae35424531d57dc728f
diff --git a/scripts/test_runner.py b/scripts/test_runner.py
index fa95c68..afb22c2 100755
--- a/scripts/test_runner.py
+++ b/scripts/test_runner.py
@@ -49,7 +49,15 @@
         """ Run the simulation command and quit the simulation."""
         self.child = pexpect.spawn(self.simulator_cmd, encoding="utf-8")
         self.child.logfile = self.buffer
-        self.child.expect(self.termination_strings, timeout=timeout)
+        try:
+            self.child.expect(self.termination_strings, timeout=timeout)
+        except pexpect.exceptions.TIMEOUT:
+            self.buffer.seek(0)
+            message = ("Runner times out with the execution log: \n\n" +
+                       cleanup_message(self.buffer.read()))
+            exc = pexpect.exceptions.TIMEOUT(message)
+            exc.__cause__ = None
+            raise exc
         self.child.send("\nq\n")
         self.child.expect(pexpect.EOF, timeout=timeout)
         self.child.close()
@@ -144,6 +152,11 @@
     "spike": args.spike_path,
 }
 
+def cleanup_message(message: str) -> str:
+    """ Clean up the message to get rid of the non-ascii code generated by Mono. """
+    ansi_escape = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
+    output = ansi_escape.sub("", message)
+    return output
 
 def main():
     """ Run a test and check for Pass or Fail """
@@ -156,10 +169,7 @@
     simulator_class = Simulators[args.simulator]
     simulator = simulator_class(simulator_path, args.elf)
     output = simulator.run(timeout=args.timeout)
-    # mono API generates escape characters at the termination. Need to clean up.
-    # TODO(hcindyl): Remove this when Renode fix the mono call.
-    ansi_escape = re.compile(r"\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])")
-    output = ansi_escape.sub("", output)
+    output = cleanup_message(output)
     print(output)
     failure_strings = [
         "FAILED",