]> git.cworth.org Git - apitrace/blobdiff - scripts/jsondiff.py
Add "apitrace repack" command.
[apitrace] / scripts / jsondiff.py
index 03e25e3b1e4bf52c0e01437304a47626bab3f9bc..680e5586ff805300e23266378391ff50d3b6c76f 100755 (executable)
@@ -60,11 +60,12 @@ class Visitor:
 
 class Dumper(Visitor):
 
-    def __init__(self):
+    def __init__(self, stream = sys.stdout):
+        self.stream = stream
         self.level = 0;
 
     def _write(self, s):
-        sys.stdout.write(s)
+        self.stream.write(s)
 
     def _indent(self):
         self._write('  '*self.level)
@@ -166,8 +167,8 @@ comparer = Comparer()
 
 class Differ(Visitor):
 
-    def __init__(self):
-        self.dumper = Dumper()
+    def __init__(self, stream = sys.stdout):
+        self.dumper = Dumper(stream)
 
     def visit(self, a, b):
         if comparer.visit(a, b):
@@ -202,11 +203,11 @@ class Differ(Visitor):
             for i in range(max(len(a), len(b))):
                 try:
                     ae = a[i]
-                except KeyError:
+                except IndexError:
                     ae = None
                 try:
                     be = b[i]
-                except KeyError:
+                except IndexError:
                     be = None
                 self.dumper._indent()
                 if comparer.visit(ae, be):
@@ -227,13 +228,13 @@ class Differ(Visitor):
         self.dumper.visit(b)
 
 
-def load(filename):
-    return json.load(open(filename, 'rt'), strict=False, object_hook = object_hook)
+def load(stream):
+    return json.load(stream, strict=False, object_hook = object_hook)
 
 
 def main():
-    a = load(sys.argv[1])
-    b = load(sys.argv[2])
+    a = load(open(sys.argv[1], 'rt'))
+    b = load(open(sys.argv[2], 'rt'))
 
     #dumper = Dumper()
     #dumper.visit(a)