X-Git-Url: https://git.cworth.org/git?p=apitrace-tests;a=blobdiff_plain;f=tool_driver.py;h=60ad5d9903052a4ae5b137a8360e223db2e8006b;hp=4cc36c65bab78bf7584a947dd6c656bd03675861;hb=41d95fe954deb386dab61a5ec908caca8431b7c5;hpb=1017d793714f4d3d2fe2b4d29e1eaf564d5db855 diff --git a/tool_driver.py b/tool_driver.py index 4cc36c6..60ad5d9 100755 --- a/tool_driver.py +++ b/tool_driver.py @@ -37,13 +37,9 @@ from base_driver import * class AsciiComparer: - def __init__(self, srcStream, refFileName, verbose=False): + def __init__(self, srcStream, refStream, verbose=False): self.srcStream = srcStream - self.refFileName = refFileName - if refFileName: - self.refStream = open(refFileName, 'rt') - else: - self.refStream = None + self.refStream = refStream def readLines(self, stream): lines = [] @@ -62,7 +58,7 @@ class AsciiComparer: try: refLine = refLines[lineNo] except IndexError: - fail('unexpected junk: %r' % self.srcLines[lineNo]) + fail('unexpected junk: %r' % srcLines[lineNo]) try: srcLine = srcLines[lineNo] @@ -76,42 +72,39 @@ class AsciiComparer: class ToolDriver(Driver): - def runTool(self): + def runScript(self, refScript): '''Run the application standalone, skipping this test if it fails by some reason.''' - if self.options.ref_dump: - stdout = subprocess.PIPE - else: - stdout = None + refStream = open(refScript, 'rt') + cwd = os.path.dirname(os.path.abspath(refScript)) - cmd = [self.options.apitrace] + self.args - p = popen(cmd, cwd=options.cwd, stdout=stdout) + while True: + args = refStream.readline().split() + cmd = [self.options.apitrace] + args - if self.options.ref_dump: - comparer = AsciiComparer(p.stdout, self.options.ref_dump, self.options.verbose) - comparer.compare() + if args[0] == 'dump': + break + + p = popen(cmd, cwd=cwd, universal_newlines=True) + p.wait() + if p.returncode != 0: + fail('`apitrace %s` returned code %i' % (args[0], p.returncode)) + + p = popen(cmd, cwd=cwd, stdout=subprocess.PIPE, universal_newlines=True) + + comparer = AsciiComparer(p.stdout, refStream, self.options.verbose) + comparer.compare() p.wait() if p.returncode != 0: - fail('tool returned code %i' % p.returncode) + fail('`apitrace %s` returned code %i' % (args[0], p.returncode)) - def createOptParser(self): - optparser = Driver.createOptParser(self) - - optparser.add_option( - '--ref-dump', metavar='PATH', - type='string', dest='ref_dump', default=None, - help='reference dump') - - return optparser - def run(self): - global options - - (options, args) = self.parseOptions() + self.parseOptions() - self.runTool() + for arg in self.args: + self.runScript(arg) pass_()