[rtems-tools commit] rtemstoolkit: Fix execute's writer thread to not eval () the input.

Chris Johns chrisj at rtems.org
Mon Mar 14 04:13:05 UTC 2016


Module:    rtems-tools
Branch:    master
Commit:    6f8b07c3b6202145fd9b86c38f786c7553eaf0c4
Changeset: http://git.rtems.org/rtems-tools/commit/?id=6f8b07c3b6202145fd9b86c38f786c7553eaf0c4

Author:    Chris Johns <chrisj at rtems.org>
Date:      Mon Mar 14 14:59:11 2016 +1100

rtemstoolkit: Fix execute's writer thread to not eval() the input.

The conversion to Python3 added an eval() call which is wrong.

Fix the spelling in execute.

Fix labels in the tester gdb locking.

Check the debug-trace arguments.

Close #2642.

---

 rtemstoolkit/execute.py | 19 ++++++++++++-------
 tester/rt/gdb.py        |  4 ++--
 tester/rt/report.py     |  4 ++--
 tester/rt/test.py       |  5 ++++-
 4 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/rtemstoolkit/execute.py b/rtemstoolkit/execute.py
index 7c168af..90ddce0 100755
--- a/rtemstoolkit/execute.py
+++ b/rtemstoolkit/execute.py
@@ -43,6 +43,7 @@ import sys
 import subprocess
 import threading
 import time
+import traceback
 
 #
 # Support to handle use in a package and as a unit test.
@@ -138,7 +139,7 @@ class execute(object):
             block and return None or False if this thread is to exit and True if this
             is a timeout check."""
             if trace_threads:
-                print('executte:_writethread: start')
+                print('execute:_writethread: start')
             encoding = True
             try:
                 tmp = bytes('temp', sys.stdin.encoding)
@@ -146,7 +147,9 @@ class execute(object):
                 encoding = False
             try:
                 while True:
-                    lines = eval(input())
+                    if trace_threads:
+                        print('execute:_writethread: call input', input)
+                    lines = input()
                     if type(lines) == str or type(lines) == bytes:
                         try:
                             if encoding:
@@ -160,14 +163,15 @@ class execute(object):
                         break
             except:
                 if trace_threads:
-                    print('executte:_writethread: exception')
+                    print('execute:_writethread: exception')
+                    print(traceback.format_exc())
                 pass
             try:
                 fh.close()
             except:
                 pass
             if trace_threads:
-                print('executte:_writethread: finished')
+                print('execute:_writethread: finished')
 
         def _readthread(exe, fh, out, prefix = ''):
             """Read from a file handle and write to the output handler
@@ -184,7 +188,7 @@ class execute(object):
                         log.flush()
 
             if trace_threads:
-                print('executte:_readthread: start')
+                print('execute:_readthread: start')
             count = 0
             line = ''
             try:
@@ -206,7 +210,8 @@ class execute(object):
             except:
                 raise
                 if trace_threads:
-                    print('executte:_readthread: exception')
+                    print('execute:_readthread: exception')
+                    print(traceback.format_exc())
                 pass
             try:
                 fh.close()
@@ -215,7 +220,7 @@ class execute(object):
             if len(line):
                 _output_line(line, exe, prefix, out, 100)
             if trace_threads:
-                print('executte:_readthread: finished')
+                print('execute:_readthread: finished')
 
         def _timerthread(exe, interval, function):
             """Timer thread is used to timeout a process if no output is
diff --git a/tester/rt/gdb.py b/tester/rt/gdb.py
index 4045f17..443e849 100644
--- a/tester/rt/gdb.py
+++ b/tester/rt/gdb.py
@@ -144,12 +144,12 @@ class gdb(object):
     def _writer(self):
         try:
             try:
-                self._lock('_open')
+                self._lock('_writer')
                 try:
                     if self.process is None:
                         return None
                 finally:
-                    self._unlock('_open')
+                    self._unlock('_writer')
                 line = self.input.get(timeout = 0.5)
                 if self.trace:
                     print('>>> input: queue=%d' % (self.input.qsize()), line)
diff --git a/tester/rt/report.py b/tester/rt/report.py
index 1aa1f35..ee282a5 100644
--- a/tester/rt/report.py
+++ b/tester/rt/report.py
@@ -145,6 +145,7 @@ class report(object):
             if name not in self.results:
                 self.lock.release()
                 raise error.general('test report missing: %s' % (name))
+            exe = path.basename(self.results[name]['exe'])
             result = self.results[name]['result']
             time = self.results[name]['end'] - self.results[name]['start']
             if mode != 'none':
@@ -158,8 +159,7 @@ class report(object):
                 log.output(header)
             if output:
                 log.output(output)
-            if header:
-                log.output('Result: %-10s Time: %s' % (result, str(time)))
+                log.output('Result: %-10s Time: %s %s' % (result, str(time), exe))
 
     def summary(self):
         def show_state(results, state, max_len):
diff --git a/tester/rt/test.py b/tester/rt/test.py
index 3f8ee49..9a34234 100644
--- a/tester/rt/test.py
+++ b/tester/rt/test.py
@@ -217,7 +217,10 @@ def run(command_path = None):
         opts.log_info()
         debug_trace = opts.find_arg('--debug-trace')
         if debug_trace:
-            debug_trace = debug_trace[1]
+            if len(debug_trace) != 1:
+                debug_trace = debug_trace[1]
+            else:
+                raise error.general('no debug flags, can be: console,gdb,output')
         else:
             debug_trace = ''
         opts.defaults['debug_trace'] = debug_trace




More information about the vc mailing list