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 = []
try:
refLine = refLines[lineNo]
except IndexError:
- fail('unexpected junk: %r' % self.srcLines[lineNo])
+ fail('unexpected junk: %r' % srcLines[lineNo])
try:
srcLine = srcLines[lineNo]
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_()