Don't show images where there is no difference.
authorCarl Worth <cworth@cworth.org>
Mon, 9 Apr 2012 18:24:52 +0000 (11:24 -0700)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Wed, 11 Apr 2012 14:16:46 +0000 (15:16 +0100)
This makes for a much more compact view for the common case where
image mismatches are rare, and makes the mismatches stand out more
making them easier to notice.

To avoid hiding information irretrievably, the filename is made into a
link to the image so that it can be easily seen if desired.

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
scripts/snapdiff.py

index 37fe889..61814d8 100755 (executable)
@@ -170,6 +170,10 @@ def main():
         '--overwrite',
         action="store_true", dest="overwrite", default=False,
         help="overwrite images")
+    optparser.add_option(
+        '--show-all',
+        action="store_true", dest="show_all", default=False,
+        help="show all images, including similar ones")
 
     (options, args) = optparser.parse_args(sys.argv[1:])
 
@@ -200,22 +204,23 @@ def main():
         delta_image = "%s.diff.png" % (root, )
         if os.path.exists(ref_image) and os.path.exists(src_image):
             comparer = Comparer(ref_image, src_image, options.alpha)
-            if options.overwrite \
-               or not os.path.exists(delta_image) \
-               or (os.path.getmtime(delta_image) < os.path.getmtime(ref_image) \
-                   and os.path.getmtime(delta_image) < os.path.getmtime(src_image)):
-
-                comparer.write_diff(delta_image, fuzz=options.fuzz)
-            if comparer.ae(fuzz=options.fuzz) == 0:
+            match = comparer.ae(fuzz=options.fuzz) == 0
+            if match:
                 bgcolor = '#20ff20'
             else:
                 failures += 1
                 bgcolor = '#ff2020'
             html.write('      <tr>\n')
-            html.write('        <td bgcolor="%s">%s</td>\n' % (bgcolor, image))
-            surface(html, ref_image)
-            surface(html, src_image)
-            surface(html, delta_image)
+            html.write('        <td bgcolor="%s"><a href="%s">%s<a/></td>\n' % (bgcolor, ref_image, image))
+            if not match or options.show_all:
+                if options.overwrite \
+                   or not os.path.exists(delta_image) \
+                   or (os.path.getmtime(delta_image) < os.path.getmtime(ref_image) \
+                       and os.path.getmtime(delta_image) < os.path.getmtime(src_image)):
+                    comparer.write_diff(delta_image, fuzz=options.fuzz)
+                surface(html, ref_image)
+                surface(html, src_image)
+                surface(html, delta_image)
             html.write('      </tr>\n')
             html.flush()
     html.write('    </table>\n')