]> git.cworth.org Git - apitrace-tests/blobdiff - driver.py
Add tweaks/comments to default.ref.json
[apitrace-tests] / driver.py
index 1c4904cc24b335f3672e846386ac4fd707ce89ce..39d7420c4e9e4853d47f33f592d94580f51e1200 100755 (executable)
--- a/driver.py
+++ b/driver.py
@@ -305,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)
@@ -321,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:
@@ -343,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]