X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=driver.py;h=39d7420c4e9e4853d47f33f592d94580f51e1200;hb=195b2e54eda22ea844af868ac6990c45e8772d37;hp=27eef97074db66b0358ba78045b063abeb352baa;hpb=5a03bade408b2288bbf905b0165a5d79002a0f6a;p=apitrace-tests diff --git a/driver.py b/driver.py index 27eef97..39d7420 100755 --- a/driver.py +++ b/driver.py @@ -131,7 +131,8 @@ class TraceChecker: if mo: self.call_no = int(mo.group(1)) function_name = mo.group(2) - if function_name.find('SwapBuffers') != -1: + if function_name.find('SwapBuffers') != -1 or \ + line.find('kCGLPFADoubleBuffer') != -1: swapbuffers += 1 if function_name in ('glFlush', 'glFinish'): flushes += 1 @@ -304,7 +305,7 @@ class TestCase: def checkState(self, callNo, refStateFileName): srcState = self.getState(callNo) - refState = json.load(open(refStateFileName, 'rt'), strict=False) + refState = self.getRefState(refStateFileName) from jsondiff import Comparer, Differ comparer = Comparer(ignore_added = True) @@ -320,6 +321,14 @@ class TestCase: differ.visit(refState, srcState) fail('state from call %u does not match %s' % (callNo, refStateFileName)) + # Allo non-standard JS comments in JSON + json_comment_re = re.compile(r'//.*$', re.MULTILINE) + + def getRefState(self, refStateFileName): + data = open(refStateFileName, 'rt').read() + data = self.json_comment_re.sub('', data) + return json.loads(data, strict=False) + def getNamePrefix(self): name = os.path.basename(self.ref_dump) try: @@ -342,17 +351,28 @@ class TestCase: def getImage(self, callNo): state = self.getState(callNo) - framebuffer = state['framebuffer'] if self.doubleBuffer: - imageObj = framebuffer['GL_BACK'] + attachments = ['GL_BACK', 'GL_BACK_LEFT', 'GL_BACK_RIGHT', 'GL_COLOR_ATTACHMENT0'] else: - imageObj = framebuffer['GL_FRONT'] + attachments = ['GL_FRONT', 'GL_FRONT_LEFT', 'GL_FRONT_RIGHT', 'GL_COLOR_ATTACHMENT0'] + imageObj = self.getFramebufferAttachment(state, attachments) data = imageObj['__data__'] stream = StringIO(base64.b64decode(data)) im = Image.open(stream) im.save('test.png') return im + def getFramebufferAttachment(self, state, attachments): + framebufferObj = state['framebuffer'] + for attachment in attachments: + try: + attachmentObj = framebufferObj[attachment] + except KeyError: + pass + else: + return attachmentObj + raise Exception("no attachment found") + def getState(self, callNo): try: state = self.stateCache[callNo]