mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 04:20:08 +01:00
tools/trace: Do a better job at comparing multi line strings.
For TGSI diffing. Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
9b7d21f8f5
commit
c14f516e58
1 changed files with 34 additions and 1 deletions
|
|
@ -28,6 +28,7 @@
|
|||
import json
|
||||
import optparse
|
||||
import re
|
||||
import difflib
|
||||
import sys
|
||||
|
||||
|
||||
|
|
@ -131,7 +132,7 @@ class Dumper(Visitor):
|
|||
self._write(']')
|
||||
|
||||
def visitValue(self, node):
|
||||
self._write(json.dumps(node))
|
||||
self._write(json.dumps(node, allow_nan=True))
|
||||
|
||||
|
||||
|
||||
|
|
@ -246,6 +247,38 @@ class Differ(Visitor):
|
|||
self.replace(a, b)
|
||||
|
||||
def replace(self, a, b):
|
||||
if isinstance(a, basestring) and isinstance(b, basestring):
|
||||
if '\n' in a or '\n' in b:
|
||||
a = a.splitlines()
|
||||
b = b.splitlines()
|
||||
differ = difflib.Differ()
|
||||
result = differ.compare(a, b)
|
||||
self.dumper.level += 1
|
||||
for entry in result:
|
||||
self.dumper._newline()
|
||||
self.dumper._indent()
|
||||
tag = entry[:2]
|
||||
text = entry[2:]
|
||||
if tag == '? ':
|
||||
tag = ' '
|
||||
prefix = ' '
|
||||
text = text.rstrip()
|
||||
suffix = ''
|
||||
else:
|
||||
prefix = '"'
|
||||
suffix = '\\n"'
|
||||
line = tag + prefix + text + suffix
|
||||
self.dumper._write(line)
|
||||
self.dumper.level -= 1
|
||||
return
|
||||
self.dumper.visit(a)
|
||||
self.dumper._write(' -> ')
|
||||
self.dumper.visit(b)
|
||||
|
||||
def isMultilineString(self, value):
|
||||
return isinstance(value, basestring) and '\n' in value
|
||||
|
||||
def replaceMultilineString(self, a, b):
|
||||
self.dumper.visit(a)
|
||||
self.dumper._write(' -> ')
|
||||
self.dumper.visit(b)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue