summaryrefslogtreecommitdiffstats
path: root/tester
diff options
context:
space:
mode:
Diffstat (limited to 'tester')
-rw-r--r--tester/rt/config.py10
-rw-r--r--tester/rt/console.py16
-rw-r--r--tester/rt/gdb.py61
-rw-r--r--tester/rt/options.py15
-rw-r--r--tester/rt/pygdb/__init__.py5
-rwxr-xr-xtester/rt/pygdb/mi_parser.py32
-rw-r--r--tester/rt/pygdb/spark.py79
-rw-r--r--tester/rt/stty.py10
-rw-r--r--tester/rt/test.py38
-rw-r--r--tester/rt/version.py16
-rwxr-xr-xtester/rtems-test6
11 files changed, 154 insertions, 134 deletions
diff --git a/tester/rt/config.py b/tester/rt/config.py
index ac9c8aa..1662f52 100644
--- a/tester/rt/config.py
+++ b/tester/rt/config.py
@@ -1,6 +1,6 @@
#
# RTEMS Tools Project (http://www.rtems.org/)
-# Copyright 2013-2014 Chris Johns (chrisj@rtems.org)
+# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -32,6 +32,8 @@
# RTEMS Testing Config
#
+from __future__ import print_function
+
import datetime
import os
import threading
@@ -42,8 +44,8 @@ from rtemstoolkit import execute
from rtemstoolkit import log
from rtemstoolkit import path
-import console
-import gdb
+from . import console
+from . import gdb
timeout = 15
@@ -185,7 +187,7 @@ class file(config.file):
def _realtime_trace(self, text):
if self.realtime_trace:
for l in text:
- print ' '.join(l)
+ print(' '.join(l))
def run(self):
self.load(self.name)
diff --git a/tester/rt/console.py b/tester/rt/console.py
index 74ec3bf..c473ad2 100644
--- a/tester/rt/console.py
+++ b/tester/rt/console.py
@@ -1,6 +1,6 @@
#
# RTEMS Tools Project (http://www.rtems.org/)
-# Copyright 2013-2014 Chris Johns (chrisj@rtems.org)
+# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -32,13 +32,15 @@
# RTEMS Testing Consoles
#
+from __future__ import print_function
+
import errno
import fcntl
import os
import threading
import time
-import stty
+from . import stty
def save():
return stty.save()
@@ -90,7 +92,7 @@ class tty(console):
def __del__(self):
super(tty, self).__del__()
if self._tracing():
- print ':: tty close', self.dev
+ print(':: tty close', self.dev)
fcntl.fcntl(me.tty.fd, fcntl.F_SETFL,
fcntl.fcntl(me.tty.fd, fcntl.F_GETFL) & ~os.O_NONBLOCK)
self.close()
@@ -98,7 +100,7 @@ class tty(console):
def open(self):
def _readthread(me, x):
if self._tracing():
- print ':: tty runner started', self.dev
+ print(':: tty runner started', self.dev)
fcntl.fcntl(me.tty.fd, fcntl.F_SETFL,
fcntl.fcntl(me.tty.fd, fcntl.F_GETFL) | os.O_NONBLOCK)
line = ''
@@ -106,7 +108,7 @@ class tty(console):
time.sleep(0.05)
try:
data = me.tty.fd.read()
- except IOError, ioe:
+ except IOError as ioe:
if ioe.errno == errno.EAGAIN:
continue
raise
@@ -121,9 +123,9 @@ class tty(console):
me.output(line)
line = ''
if self._tracing():
- print ':: tty runner finished', self.dev
+ print(':: tty runner finished', self.dev)
if self._tracing():
- print ':: tty open', self.dev
+ print(':: tty open', self.dev)
self.tty = stty.tty(self.dev)
self.tty.set(self.setup)
self.tty.on()
diff --git a/tester/rt/gdb.py b/tester/rt/gdb.py
index 956b395..c054422 100644
--- a/tester/rt/gdb.py
+++ b/tester/rt/gdb.py
@@ -1,6 +1,6 @@
#
# RTEMS Tools Project (http://www.rtems.org/)
-# Copyright 2013-2014 Chris Johns (chrisj@rtems.org)
+# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -32,19 +32,26 @@
# RTEMS Testing GDB Interface
#
+from __future__ import print_function
+
import os
-import Queue
import sys
import termios
import threading
+try:
+ import queue
+except ImportError:
+ import Queue
+ queue = Queue
+
from rtemstoolkit import error
from rtemstoolkit import execute
from rtemstoolkit import options
from rtemstoolkit import path
-import console
-import pygdb
+from . import console
+from . import pygdb
#
# The MI parser needs a global lock. It has global objects.
@@ -65,8 +72,8 @@ class gdb(object):
self.bsp_arch = bsp_arch
self.output = None
self.gdb_console = None
- self.input = Queue.Queue()
- self.commands = Queue.Queue()
+ self.input = queue.Queue()
+ self.commands = queue.Queue()
self.process = None
self.state = {}
self.running = False
@@ -77,12 +84,12 @@ class gdb(object):
def _lock(self, msg):
if self.lock_trace:
- print '|[ LOCK:%s ]|' % (msg)
+ print('|[ LOCK:%s ]|' % (msg))
self.lock.acquire()
def _unlock(self, msg):
if self.lock_trace:
- print '|] UNLOCK:%s [|' % (msg)
+ print('|] UNLOCK:%s [|' % (msg))
self.lock.release()
def _mi_lock(self):
@@ -93,7 +100,7 @@ class gdb(object):
def _put(self, text):
if self.trace:
- print ')))', text
+ print(')))', text)
self.commands.put(text)
def _input_commands(self):
@@ -101,11 +108,11 @@ class gdb(object):
return False
try:
if self.trace:
- print '... input empty ', self.input.empty()
+ print('... input empty ', self.input.empty())
if self.input.empty():
line = self.commands.get(block = False)
if self.trace:
- print '+++', line
+ print('+++', line)
self.input.put(line)
except:
pass
@@ -114,12 +121,12 @@ class gdb(object):
def _reader(self, line):
self._lock('_reader')
if self.trace:
- print '<<<', line
+ print('<<<', line)
try:
self.lc += 1
if line.startswith('(gdb)'):
if self.trace:
- print '^^^ (gdb)'
+ print('^^^ (gdb)')
if not self._input_commands():
self.gdb_expect()
self._input_commands()
@@ -139,18 +146,18 @@ class gdb(object):
self._unlock('_open')
line = self.input.get(timeout = 0.5)
if self.trace:
- print '>>> input: queue=%d' % (self.input.qsize()), line
- except Queue.Empty:
+ print('>>> input: queue=%d' % (self.input.qsize()), line)
+ except queue.Empty:
return True
if line is None:
return None
return line + os.linesep
except:
if self.trace:
- print 'writer exception'
+ print('writer exception')
pass
if self.trace:
- print 'writer closing'
+ print('writer closing')
return False
def _timeout(self):
@@ -207,7 +214,7 @@ class gdb(object):
self.gdb_console('gdb: %s' % (' '.join(cmds)))
ec, proc = self.process.open(cmds, timeout = (timeout, self._timeout))
if self.trace:
- print 'gdb done', ec
+ print('gdb done', ec)
if ec > 0:
raise error.general('gdb exec: %s: %s' % (cmds[0], os.strerror(ec)))
except:
@@ -220,7 +227,7 @@ class gdb(object):
def gdb_expect(self):
if self.trace:
- print '}}} gdb-expect'
+ print('}}} gdb-expect')
if self.process and not self.running and self.script is not None:
if self.script_line == len(self.script):
self._put(None)
@@ -239,12 +246,12 @@ class gdb(object):
self._mi_lock()
try:
if self.mi_trace:
- print 'mi-data:', lines
+ print('mi-data:', lines)
rec = pygdb.mi_parser.process(lines)
finally:
self._mi_unlock()
if self.mi_trace:
- print 'mi-rec:', rec
+ print('mi-rec:', rec)
if rec.record_type == 'result':
if rec.type == 'result':
if rec.class_ == 'error':
@@ -256,12 +263,12 @@ class gdb(object):
elif rec.type == 'exec':
if rec.class_ == 'running':
if self.trace:
- print '*** running'
+ print('*** running')
self._put('')
self.running = True
elif rec.class_ == 'stopped':
if self.trace:
- print '*** stopped'
+ print('*** stopped')
self.running = False
#self._put('-data-list-register-values')
elif rec.type == 'breakpoint':
@@ -284,13 +291,13 @@ class gdb(object):
if last_lf >= 0:
lines = self.output_buffer[:last_lf]
if self.trace:
- print '/// console output'
+ print('/// console output')
for line in lines.splitlines():
self.output(line)
self.output_buffer = self.output_buffer[last_lf + 1:]
except:
if self.trace:
- print '/// console output'
+ print('/// console output')
for line in lines.splitlines():
self.output(line)
@@ -298,9 +305,9 @@ if __name__ == "__main__":
stdtty = console.save()
try:
def output(text):
- print ']', text
+ print(']', text)
def gdb_console(text):
- print '>', text
+ print('>', text)
script = ['target sim']
if len(sys.argv) > 1:
executable = sys.argv[1]
diff --git a/tester/rt/options.py b/tester/rt/options.py
index a916cbb..3b1adef 100644
--- a/tester/rt/options.py
+++ b/tester/rt/options.py
@@ -32,6 +32,8 @@
# Determine the defaults and load the specific file.
#
+from __future__ import print_function
+
import glob
import pprint
import re
@@ -45,8 +47,7 @@ from rtemstoolkit import log
from rtemstoolkit import macros
from rtemstoolkit import options
from rtemstoolkit import path
-
-import version
+from rtemstoolkit import version
#
# The path for the defaults.
@@ -114,13 +115,13 @@ def run(args):
log.notice(str(_opts))
log.notice('Defaults:')
log.notice(str(_opts.defaults))
- except error.general, gerr:
- print gerr
+ except error.general as gerr:
+ print(gerr)
sys.exit(1)
- except error.internal, ierr:
- print ierr
+ except error.internal as ierr:
+ print(ierr)
sys.exit(1)
- except error.exit, eerr:
+ except error.exit as eerr:
pass
except KeyboardInterrupt:
log.notice('abort: user terminated')
diff --git a/tester/rt/pygdb/__init__.py b/tester/rt/pygdb/__init__.py
index b52f6f9..00b3364 100644
--- a/tester/rt/pygdb/__init__.py
+++ b/tester/rt/pygdb/__init__.py
@@ -17,5 +17,6 @@
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
all = ['mi_parser']
-from mi_parser import scan
-from mi_parser import process
+from . import mi_parser
+scan = mi_parser.scan
+process = mi_parser.process
diff --git a/tester/rt/pygdb/mi_parser.py b/tester/rt/pygdb/mi_parser.py
index 65ea5e0..dd1d08f 100755
--- a/tester/rt/pygdb/mi_parser.py
+++ b/tester/rt/pygdb/mi_parser.py
@@ -28,10 +28,12 @@
# $Id$
+from __future__ import print_function
import re
import pprint
-import spark
+
+from . import spark
def __private():
class Token:
@@ -93,7 +95,7 @@ def __private():
def t_default(self, s):
r'( . | \n )+'
- raise Exception, "Specification error: unmatched input for '%s'" % s
+ raise Exception("Specification error: unmatched input for '%s'" % s)
def __unescape(self, s):
s = re.sub(r'\\r', r'\r', s)
@@ -167,8 +169,8 @@ def __private():
def error(self, token, i=0, tokens=None):
if i > 2:
- print '%s %s %s %s' % (tokens[i-3], tokens[i-2], tokens[i-1], tokens[i])
- raise Exception, "Syntax error at or near %d:'%s' token" % (i, token)
+ print('%s %s %s %s' % (tokens[i-3], tokens[i-2], tokens[i-1], tokens[i]))
+ raise Exception("Syntax error at or near %d:'%s' token" % (i, token))
class GdbMiInterpreter(spark.GenericASTTraversal):
def __init__(self, ast):
@@ -203,8 +205,8 @@ def __private():
# tuple ::= { result result_list }
node.value = node[1].value
for result in node[2].value:
- for n, v in result.items():
- if node.value.has_key(n):
+ for n, v in list(result.items()):
+ if n in node.value:
#print '**********list conversion: [%s] %s -> %s' % (n, node.value[n], v)
old = node.value[n]
if not isinstance(old, list):
@@ -213,7 +215,7 @@ def __private():
else:
node.value[n] = v
else:
- raise Exception, 'Invalid tuple'
+ raise Exception('Invalid tuple')
#print 'tuple: %s' % node.value
def n_list(self, node):
@@ -305,7 +307,7 @@ def __private():
def __repr__(self):
return pprint.pformat(self.__dict__)
- def __nonzero__(self):
+ def __bool__(self):
return len(self.__dict__) > 0
def __getitem__(self, i):
@@ -320,7 +322,7 @@ def __private():
return None
def graft(self, dict_):
- for name, value in dict_.items():
+ for name, value in list(dict_.items()):
name = name.replace('-', '_')
if isinstance(value, dict):
value = GdbDynamicObject(value)
@@ -336,7 +338,7 @@ def __private():
class GdbMiRecord:
def __init__(self, record):
self.result = None
- for name, value in record[0].items():
+ for name, value in list(record[0].items()):
name = name.replace('-', '_')
if name == 'results':
for result in value:
@@ -363,19 +365,19 @@ def parse(tokens):
def process(input):
tokens = scan(input)
- ast = parse(tokens)
+ ast = parse(tokens)
__the_interpreter(ast)
return __the_output(ast.value)
if __name__ == '__main__':
def main():
def print_tokens(tokens):
- print
+ print()
for token in tokens:
if token.value:
- print token.type + ': ' + token.value
+ print(token.type + ': ' + token.value)
else:
- print token.type
+ print(token.type)
def run_test(test):
lines = test.splitlines()
@@ -386,7 +388,7 @@ if __name__ == '__main__':
ast = parse(tokens)
__the_interpreter(ast)
output = __the_output(ast.value)
- print output
+ print(output)
x = '"No symbol table is loaded. Use the \\"file\\" command."'
m = re.match('\".*?(?<![\\\\])\"', x)
diff --git a/tester/rt/pygdb/spark.py b/tester/rt/pygdb/spark.py
index aab2d19..0eac365 100644
--- a/tester/rt/pygdb/spark.py
+++ b/tester/rt/pygdb/spark.py
@@ -19,6 +19,8 @@
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+from __future__ import print_function
+
__version__ = 'SPARK-0.7 (pre-alpha-7)'
import re
@@ -30,8 +32,8 @@ def _namelist(instance):
for c in classlist:
for b in c.__bases__:
classlist.append(b)
- for name in c.__dict__.keys():
- if not namedict.has_key(name):
+ for name in list(c.__dict__.keys()):
+ if name not in namedict:
namelist.append(name)
namedict[name] = 1
return namelist
@@ -42,7 +44,7 @@ class GenericScanner:
self.re = re.compile(pattern, re.VERBOSE|flags)
self.index2func = {}
- for name, number in self.re.groupindex.items():
+ for name, number in list(self.re.groupindex.items()):
self.index2func[number-1] = getattr(self, 't_' + name)
def makeRE(self, name):
@@ -57,10 +59,10 @@ class GenericScanner:
rv.append(self.makeRE(name))
rv.append(self.makeRE('t_default'))
- return string.join(rv, '|')
+ return '|'.join(rv)
def error(self, s, pos):
- print "Lexical error at position %s" % pos
+ print("Lexical error at position %s" % pos)
raise SystemExit
def position(self, newpos=None):
@@ -81,12 +83,12 @@ class GenericScanner:
groups = m.groups()
self.pos = m.end()
for i in range(len(groups)):
- if groups[i] is not None and self.index2func.has_key(i):
+ if groups[i] is not None and i in self.index2func:
self.index2func[i](groups[i])
def t_default(self, s):
r'( . | \n )+'
- print "Specification error: unmatched input"
+ print("Specification error: unmatched input")
raise SystemExit
#
@@ -145,14 +147,14 @@ class GenericParser:
changes = 1
while changes:
changes = 0
- for k, v in self.edges.items():
+ for k, v in list(self.edges.items()):
if v is None:
state, sym = k
- if self.states.has_key(state):
+ if state in self.states:
self.goto(state, sym)
changes = 1
rv = self.__dict__.copy()
- for s in self.states.values():
+ for s in list(self.states.values()):
del s.items
del rv['rule2func']
del rv['nullable']
@@ -179,7 +181,7 @@ class GenericParser:
def addRule(self, doc, func, _preprocess=1):
fn = func
- rules = string.split(doc)
+ rules = doc.split()
index = []
for i in range(len(rules)):
@@ -195,7 +197,7 @@ class GenericParser:
if _preprocess:
rule, fn = self.preprocess(rule, func)
- if self.rules.has_key(lhs):
+ if lhs in self.rules:
self.rules[lhs].append(rule)
else:
self.rules[lhs] = [ rule ]
@@ -218,7 +220,7 @@ class GenericParser:
self.nullable = {}
tbd = []
- for rulelist in self.rules.values():
+ for rulelist in list(self.rules.values()):
lhs = rulelist[0][0]
self.nullable[lhs] = 0
for rule in rulelist:
@@ -233,7 +235,7 @@ class GenericParser:
# grammars.
#
for sym in rhs:
- if not self.rules.has_key(sym):
+ if sym not in self.rules:
break
else:
tbd.append(rule)
@@ -267,7 +269,7 @@ class GenericParser:
def makeNewRules(self):
worklist = []
- for rulelist in self.rules.values():
+ for rulelist in list(self.rules.values()):
for rule in rulelist:
worklist.append((rule, 0, 1, rule))
@@ -276,7 +278,7 @@ class GenericParser:
n = len(rhs)
while i < n:
sym = rhs[i]
- if not self.rules.has_key(sym) or \
+ if sym not in self.rules or \
not self.nullable[sym]:
candidate = 0
i = i + 1
@@ -293,7 +295,7 @@ class GenericParser:
if candidate:
lhs = self._NULLABLE+lhs
rule = (lhs, rhs)
- if self.newrules.has_key(lhs):
+ if lhs in self.newrules:
self.newrules[lhs].append(rule)
else:
self.newrules[lhs] = [ rule ]
@@ -303,7 +305,7 @@ class GenericParser:
return None
def error(self, token):
- print "Syntax error at or near `%s' token" % token
+ print("Syntax error at or near `%s' token" % token)
raise SystemExit
def parse(self, tokens):
@@ -320,7 +322,7 @@ class GenericParser:
self.states = { 0: self.makeState0() }
self.makeState(0, self._BOF)
- for i in xrange(len(tokens)):
+ for i in range(len(tokens)):
sets.append([])
if sets[i] == []:
@@ -349,7 +351,8 @@ class GenericParser:
#
return self._NULLABLE == sym[0:len(self._NULLABLE)]
- def skip(self, (lhs, rhs), pos=0):
+ def skip(self, xxx_todo_changeme, pos=0):
+ (lhs, rhs) = xxx_todo_changeme
n = len(rhs)
while pos < n:
if not self.isnullable(rhs[pos]):
@@ -372,7 +375,7 @@ class GenericParser:
core.sort()
tcore = tuple(core)
- if self.cores.has_key(tcore):
+ if tcore in self.cores:
return self.cores[tcore]
#
# Nope, doesn't exist. Compute it and the associated
@@ -396,13 +399,13 @@ class GenericParser:
nextSym = rhs[pos]
key = (X.stateno, nextSym)
- if not rules.has_key(nextSym):
- if not edges.has_key(key):
+ if nextSym not in rules:
+ if key not in edges:
edges[key] = None
X.T.append(nextSym)
else:
edges[key] = None
- if not predicted.has_key(nextSym):
+ if nextSym not in predicted:
predicted[nextSym] = 1
for prule in rules[nextSym]:
ppos = self.skip(prule)
@@ -426,10 +429,10 @@ class GenericParser:
# need to know the entire set of predicted nonterminals
# to do this without accidentally duplicating states.
#
- core = predicted.keys()
+ core = list(predicted.keys())
core.sort()
tcore = tuple(core)
- if self.cores.has_key(tcore):
+ if tcore in self.cores:
self.edges[(k, None)] = self.cores[tcore]
return k
@@ -440,7 +443,7 @@ class GenericParser:
def goto(self, state, sym):
key = (state, sym)
- if not self.edges.has_key(key):
+ if key not in self.edges:
#
# No transitions from state on sym.
#
@@ -638,7 +641,7 @@ class GenericParser:
for i in range(len(rhs)-1, -1, -1):
sym = rhs[i]
- if not self.newrules.has_key(sym):
+ if sym not in self.newrules:
if sym != self._BOF:
attr[i] = tokens[k-1]
key = (item, k)
@@ -668,7 +671,7 @@ class GenericParser:
sortlist.append((len(rhs), name))
name2index[name] = i
sortlist.sort()
- list = map(lambda (a,b): b, sortlist)
+ list = [a_b[1] for a_b in sortlist]
return rules[name2index[self.resolve(list)]]
def resolve(self, list):
@@ -833,15 +836,15 @@ class GenericASTMatcher(GenericParser):
def _dump(tokens, sets, states):
for i in range(len(sets)):
- print 'set', i
+ print('set', i)
for item in sets[i]:
- print '\t', item
+ print('\t', item)
for (lhs, rhs), pos in states[item[0]].items:
- print '\t\t', lhs, '::=',
- print string.join(rhs[:pos]),
- print '.',
- print string.join(rhs[pos:])
+ print('\t\t', lhs, '::=', end=' ')
+ print(string.join(rhs[:pos]), end=' ')
+ print('.', end=' ')
+ print(string.join(rhs[pos:]))
if i < len(tokens):
- print
- print 'token', str(tokens[i])
- print
+ print()
+ print('token', str(tokens[i]))
+ print()
diff --git a/tester/rt/stty.py b/tester/rt/stty.py
index d059b40..1483d56 100644
--- a/tester/rt/stty.py
+++ b/tester/rt/stty.py
@@ -1,6 +1,6 @@
#
# RTEMS Tools Project (http://www.rtems.org/)
-# Copyright 2013-2014 Chris Johns (chrisj@rtems.org)
+# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -32,6 +32,8 @@
# RTEMS Testing Consoles
#
+from __future__ import print_function
+
import os
import sys
import termios
@@ -72,7 +74,7 @@ class tty:
raise error.general('dev not found: %s' % (dev))
try:
self.fd = open(dev, 'rw')
- except IOError, ioe:
+ except IOError as ioe:
raise error.general('opening tty dev: %s: %s' % (dev, ioe))
except:
raise error.general('opening tty dev: %s: unknown' % (dev))
@@ -558,9 +560,9 @@ if __name__ == "__main__":
t.control('CRTSCTS', False)
t.vmin(1)
t.vtime(2)
- print t
+ print(t)
t.set('B115200,~BRKINT,IGNBRK,IGNCR,~ICANON,~ISIG,~IEXTEN,~ECHO,CLOCAL,~CRTSCTS')
- print t
+ print(t)
t.on()
while True:
c = t.fd.read(1)
diff --git a/tester/rt/test.py b/tester/rt/test.py
index b0e041a..c118382 100644
--- a/tester/rt/test.py
+++ b/tester/rt/test.py
@@ -1,6 +1,6 @@
#
# RTEMS Tools Project (http://www.rtems.org/)
-# Copyright 2013-2014 Chris Johns (chrisj@rtems.org)
+# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -28,8 +28,11 @@
# POSSIBILITY OF SUCH DAMAGE.
#
+from __future__ import print_function
+
import copy
import datetime
+import fnmatch
import os
import sys
import threading
@@ -41,12 +44,11 @@ from rtemstoolkit import path
from rtemstoolkit import stacktraces
from rtemstoolkit import version
-import bsps
-import config
-import console
-import options
-import report
-import fnmatch
+from . import bsps
+from . import config
+from . import console
+from . import options
+from . import report
class test(object):
def __init__(self, index, total, report, executable, rtems_tools, bsp, bsp_config, opts):
@@ -118,7 +120,7 @@ class test_run(object):
def reraise(self):
if self.result is not None:
- raise self.result[0], self.result[1], self.result[2]
+ raise self.result[0](self.result[1]).with_traceback(self.result[2])
def kill(self):
if self.test:
@@ -157,9 +159,9 @@ def report_finished(reports, report_mode, reporting, finished, job_trace):
if len(reported):
del reported[:]
if job_trace:
- print '}} threading:', threading.active_count()
+ print('}} threading:', threading.active_count())
for t in threading.enumerate():
- print '}} ', t.name
+ print('}} ', t.name)
return reporting
def _job_trace(tst, msg, total, exe, active, reporting):
@@ -302,20 +304,20 @@ def run(command_path = None):
end_time = datetime.datetime.now()
log.notice('Average test time: %s' % (str((end_time - start_time) / total)))
log.notice('Testing time : %s' % (str(end_time - start_time)))
- except error.general, gerr:
- print gerr
+ except error.general as gerr:
+ print(gerr)
sys.exit(1)
- except error.internal, ierr:
- print ierr
+ except error.internal as ierr:
+ print(ierr)
sys.exit(1)
- except error.exit, eerr:
+ except error.exit as eerr:
sys.exit(2)
except KeyboardInterrupt:
if opts is not None and opts.find_arg('--stacktrace'):
- print '}} dumping:', threading.active_count()
+ print('}} dumping:', threading.active_count())
for t in threading.enumerate():
- print '}} ', t.name
- print stacktraces.trace()
+ print('}} ', t.name)
+ print(stacktraces.trace())
log.notice('abort: user terminated')
killall(tests)
sys.exit(1)
diff --git a/tester/rt/version.py b/tester/rt/version.py
index 7c82de3..b9b040d 100644
--- a/tester/rt/version.py
+++ b/tester/rt/version.py
@@ -1,6 +1,6 @@
#
# RTEMS Tools Project (http://www.rtems.org/)
-# Copyright 2013-2014 Chris Johns (chrisj@rtems.org)
+# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -28,11 +28,7 @@
# POSSIBILITY OF SUCH DAMAGE.
#
-#
-# Manage paths locally. The internally the path is in Unix or shell format and
-# we convert to the native format when performing operations at the Python
-# level. This allows macro expansion to work.
-#
+from __future__ import print_function
major = 0
minor = 2
@@ -42,7 +38,7 @@ def str():
return '%d.%d.%d'% (major, minor, revision)
if __name__ == '__main__':
- print 'major = %d' % (major)
- print 'minor = %d' % (minor)
- print 'revision = %d' % (revision)
- print 'Version: %s' % (str())
+ print('major = %d' % (major))
+ print('minor = %d' % (minor))
+ print('revision = %d' % (revision))
+ print('Version: %s' % (str()))
diff --git a/tester/rtems-test b/tester/rtems-test
index f573fea..13025cc 100755
--- a/tester/rtems-test
+++ b/tester/rtems-test
@@ -1,7 +1,7 @@
#! /usr/bin/env python
#
# RTEMS Tools Project (http://www.rtems.org/)
-# Copyright 2013, 2015 Chris Johns (chrisj@rtems.org)
+# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
# All rights reserved.
#
# This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -29,6 +29,8 @@
# POSSIBILITY OF SUCH DAMAGE.
#
+from __future__ import print_function
+
import sys, os
base = os.path.dirname(os.path.abspath(sys.argv[0]))
parent = os.path.dirname(base)
@@ -39,5 +41,5 @@ try:
import rt.test
rt.test.run()
except ImportError:
- print >> sys.stderr, "Incorrect RTEMS Tools installation"
+ print("Incorrect RTEMS Tools installation", file = sys.stderr)
sys.exit(1)