sys.stdout.write(line + '\n')
mo = self.call_re.match(line)
if mo:
- self.call_no = int(mo.group(1))
+ self.callNo = int(mo.group(1))
function_name = mo.group(2)
if function_name.find('SwapBuffers') != -1 or \
line.find('kCGLPFADoubleBuffer') != -1:
verbose = False
+ threshold_precision = 12.0
+
def __init__(self):
self.stateCache = {}
return
if self.trace_file is None:
- name, ext = os.path.splitext(os.path.basename(self.cmd[0]))
+ if self.ref_dump is not None:
+ name = self.ref_dump
+ else:
+ name = self.cmd[0]
+ name, ext = os.path.splitext(os.path.basename(name))
+ while ext:
+ name, ext = os.path.splitext(os.path.basename(name))
self.trace_file = os.path.abspath(os.path.join(self.results, name + '.trace'))
if os.path.exists(self.trace_file):
os.remove(self.trace_file)
from snapdiff import Comparer
comparer = Comparer(refImage, srcImage)
- match = comparer.ae()
- if not match:
+ precision = comparer.precision(filter=True)
+ sys.stdout.write('precision of %f bits against %s\n' % (precision, refImageFileName))
+ if precision < self.threshold_precision:
prefix = '%s.%u' % (self.getNamePrefix(), callNo)
srcImageFileName = prefix + '.src.png'
+ srcImage.save(srcImageFileName)
diffImageFileName = prefix + '.diff.png'
comparer.write_diff(diffImageFileName)
fail('snapshot from call %u does not match %s' % (callNo, refImageFileName))
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)
- state = json.loads(data, strict=False)
+ stream = open(refStateFileName, 'rt')
+ from jsondiff import load
+ state = load(stream)
self.adjustRefState(state)
return state
except KeyError:
return
- if platform.system() == 'Darwin' or True:
+ if platform.system() == 'Darwin':
# Mac OS X drivers fail on GL_COLOR_SUM
# XXX: investigate this
self.removeState(parameters, 'GL_COLOR_SUM')