From 87744d670167c27c516a3b3e960c49d85b72958e Mon Sep 17 00:00:00 2001
From: Daniel Brown <ddb@star.sr.bham.ac.uk>
Date: Mon, 5 Aug 2013 19:06:55 +0100
Subject: [PATCH] added diff output for each test file

---
 pykat/testing/test.py                         |  4 +--
 .../web/templates/finesse_test_view.html      |  2 +-
 pykat/testing/web/web_interface.py            | 26 ++++++++++++++++++-
 3 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/pykat/testing/test.py b/pykat/testing/test.py
index fbd4894..d6a7d0e 100644
--- a/pykat/testing/test.py
+++ b/pykat/testing/test.py
@@ -230,9 +230,7 @@ class FinesseTestProcess(Thread):
                 else:
                     try:
                         start = time.time()
-                        
-                        print "running", kat, FINESSE_EXE
-                        
+                                                
                         out,err = utils.runcmd([FINESSE_EXE, "--noheader", kat], cwd=SUITE_PATH)
                         
                         OUT_FILE = os.path.join(SUITE_PATH,basename + ".out")
diff --git a/pykat/testing/web/templates/finesse_test_view.html b/pykat/testing/web/templates/finesse_test_view.html
index 23e7d38..738e26e 100644
--- a/pykat/testing/web/templates/finesse_test_view.html
+++ b/pykat/testing/web/templates/finesse_test_view.html
@@ -23,7 +23,7 @@
                 <li>{{ suite }}</li>
                 <ul>
                     {% for item in kats[suite] %}
-                    <li><span style="display:inline-block;width: 300px">{{item[0]}}</span>Max rel diff = {{item[1]}}</li>
+                    <li><span style="display:inline-block;width: 300px">{{item[0]}}</span><a href="/finesse/view/{{view_test_id}}/diff/{{suite}}/{{item[0]}}">View Diff</a> &nbsp; Max rel diff = {{item[1]}}</li>
                     {% if item[2][0] != "" %}
                     <ul>
                         <li>stdout: <pre>{{item[2][0]}}</pre></li>
diff --git a/pykat/testing/web/web_interface.py b/pykat/testing/web/web_interface.py
index 8e78996..929f244 100644
--- a/pykat/testing/web/web_interface.py
+++ b/pykat/testing/web/web_interface.py
@@ -15,7 +15,7 @@ from pykat.testing.web import app
 from hashlib import md5
 from CodernityDB.database_thread_safe import ThreadSafeDatabase
 from CodernityDB.database import RecordNotFound
-
+import numpy as np
 from pykat.testing.web.database_indices import TestIDIndex, SrcCommitIndex, KatTestIndex
 
 import os, sys, traceback
@@ -533,7 +533,31 @@ def finesse_view_make(view_test_id, log):
         
     else:
         return ""
+
+@app.route('/finesse/view/<view_test_id>/diff/<suite>/<kat>/', methods=["GET"])
+def finesse_view_diff(view_test_id, suite, kat):
+    out = kat[:-4] + ".out"
+    REF_FILE = os.path.join(app.instance_path,"finesse_test","kat_test",suite,"reference",out)
+    OUT_FILE = os.path.join(app.instance_path,"tests",str(view_test_id),"outputs",suite,out)
+            
+    if not os.path.exists(REF_FILE):
+        raise Exception("Reference file " + REF_FILE + " not found")
+    
+    if not os.path.exists(OUT_FILE):
+        raise Exception("Output file " + OUT_FILE + " not found")
         
+    #ref_data = np.loadtxt(REF_FILE)
+    #out_data = np.loadtxt(OUT_FILE)
+    
+    import difflib
+    
+    ref = open(REF_FILE, 'U').readlines()
+    out = open(OUT_FILE, 'U').readlines()
+    
+    
+    return difflib.HtmlDiff().make_file(ref,out,REF_FILE,OUT_FILE)
+                            
+    
 @app.route('/finesse/view/<view_test_id>/', methods=["GET"])
 def finesse_view(view_test_id):
     
-- 
GitLab