import os
import sys
import runtest
class Filter(runtest.Filter):
def __init__(self):
runtest.Filter.__init__(self)
def add(self, *args, **kwargs):
try:
runtest.Filter.add(self, *args, **kwargs)
except runtest.FilterKeywordError, e:
sys.stderr.write(str(e))
sys.exit(-1)
class TestRun(runtest.TestRun):
def __init__(self, _file, argv):
runtest.TestRun.__init__(self, _file, argv)
self.return_code = 0
def run(self, inp_files, f=None, accepted_errors=[]):
if sys.platform == "win32":
executable = 'gpunch.exe'
else:
executable = 'gpunch'
executable = os.path.normpath(os.path.join(self.binary_dir, executable))
if self.skip_run:
sys.stdout.write('\nskipping actual run\n')
else:
if not os.path.exists(executable):
sys.stderr.write('ERROR: executable not found in %s\n' % executable)
sys.stderr.write(' have you set the correct --binary-dir (or -b)?\n')
sys.stderr.write(' try also --help\n')
sys.exit(-1)
for inp in inp_files:
out = '%s.out' % os.path.splitext(inp)[0]
sys.stdout.write('\nrunning test: %s\n' % inp)
command = executable + ' %s %s' % (inp, out)
try:
runtest.TestRun.execute(self,
command=command,
accepted_errors=accepted_errors)
if f is None:
sys.stdout.write('finished (no reference)\n')
else:
try:
f.check(self.work_dir, '%s' % out, 'reference/%s' % out, self.verbose)
sys.stdout.write('passed\n')
except IOError, e:
sys.stderr.write('ERROR: could not open file %s\n' % e.filename)
sys.exit(-1)
except runtest.TestFailedError, e:
sys.stderr.write(str(e))
self.return_code += 1
except runtest.BadFilterError, e:
sys.stderr.write(str(e))
sys.exit(-1)
except runtest.FilterKeywordError, e:
sys.stderr.write(str(e))
sys.exit(-1)
except runtest.AcceptedError, e:
sys.stdout.write(str(e))
except runtest.SubprocessError, e:
sys.stderr.write(str(e))
sys.exit(-1)