From cedb1572f145c3a074a8562ae506402f34055f6d Mon Sep 17 00:00:00 2001 From: Daniel Brown <ddb@star.sr.bham.ac.uk> Date: Wed, 21 Aug 2013 16:21:58 +0100 Subject: [PATCH] setting defaults in test class more appropriately. Commits are started oldest first now when selecting multiple ones from the list --- pykat/testing/test.py | 35 +++++----- pykat/testing/web/templates/finesse_test.html | 2 +- .../web/templates/finesse_test_view.html | 64 ++++++++++++++++--- pykat/testing/web/web_interface.py | 61 +++++++++++++++--- 4 files changed, 125 insertions(+), 37 deletions(-) diff --git a/pykat/testing/test.py b/pykat/testing/test.py index 091ee91..ba740ab 100644 --- a/pykat/testing/test.py +++ b/pykat/testing/test.py @@ -23,27 +23,26 @@ class DiffException(Exception): self.outfile = outfile class FinesseTestProcess(Thread): - - queue_time = None - status = "" - built = False - total_kats = 0 - done_kats = 0 - git_commit = "" - test_id = -1 - finished_test = False - diff_rel_eps = 1e-12 - running_kat = "" - running_suite = "" - cancelling = False - errorOccurred = None - diffFound = False - diffing = False - def __init__(self, TEST_DIR, BASE_DIR, test_commit, run_fast=False, kats=[], test_id="0", git_bin="",emails="", nobuild=False,*args, **kqwargs): + + self.queue_time = None + self.status = "" + self.built = False + self.total_kats = 0 + self.done_kats = 0 + self.git_commit = "" + self.test_id = -1 + self.finished_test = False + self.diff_rel_eps = 1e-12 + self.running_kat = "" + self.running_suite = "" + self.cancelling = False + self.errorOccurred = None + self.diffFound = False + self.diffing = False Thread.__init__(self) self.git_commit = test_commit @@ -125,8 +124,6 @@ class FinesseTestProcess(Thread): self.built = False BUILD_PATH = os.path.join(self.BASE_DIR, "build") - - print "NOBUILD", self.nobuild # Firstly we need to build the latest version of finesse if not self.nobuild: diff --git a/pykat/testing/web/templates/finesse_test.html b/pykat/testing/web/templates/finesse_test.html index 6d987e7..380af2e 100644 --- a/pykat/testing/web/templates/finesse_test.html +++ b/pykat/testing/web/templates/finesse_test.html @@ -373,7 +373,7 @@ list = $("#commit_list"); - data = JSON.stringify({"git_commit": list.val(), "kats":kats, "nobuild":$('#chkNoBuild').is(':checked')}); + data = JSON.stringify({"git_commit": list.val().reverse(), "kats":kats, "nobuild":$('#chkNoBuild').is(':checked')}); $.ajax({ type: "POST", diff --git a/pykat/testing/web/templates/finesse_test_view.html b/pykat/testing/web/templates/finesse_test_view.html index 4d4428b..39a3e7e 100644 --- a/pykat/testing/web/templates/finesse_test_view.html +++ b/pykat/testing/web/templates/finesse_test_view.html @@ -15,22 +15,55 @@ <pre>{{ excp_message }}</pre> <pre>{{ excp_traceback }}</pre> - <h3>Kat result summary</h3> - - <h4>Results</h4> - <table id="tblResults"> + <h3>Files that were ERROR</h3> + <table id="tblResultsERR"> <thead> <td>Suite</td> <td>Kat</td> <td>Max Rel. Difference</td> + <td>View stderr/stdout</td> <td>View .kat</td> <td>View .out</td> <td>View ref</td> <td>View Diff</td> <td>View History </thead> - {% for suite in kats.keys() %} - {% for item in kats[suite] %} + {% for suite in kats_err.keys() %} + {% for item in kats_err[suite] %} + <tr> + <td>{{ suite }}</td> + <td>{{item[0]}}</td> + <td>{{item[1]}}</td> + {% if item[2][0].strip() %} + <td><a target="_blank" href="/finesse/view/exception/{{view_test_id}}/{{suite}}/{{item[0]}}/">Error</a></td> + {% else%} + <td><a target="_blank" href="/finesse/view/exception/{{view_test_id}}/{{suite}}/{{item[0]}}/">Error</a></td> + {% endif %} + <td><a target="_blank" href="/finesse/kat/{{suite}}/{{item[0]}}">Kat</a></td> + <td><a target="_blank" href="/finesse/out/{{view_test_id}}/{{suite}}/{{item[0]}}">Out</a></td> + <td><a target="_blank" href="/finesse/ref/{{suite}}/{{item[0]}}">Ref</a></td> + <td><a target="_blank" href="/finesse/view/{{view_test_id}}/diff/{{suite}}/{{item[0]}}">Diff</a></td> + <td><a target="_blank" href="/finesse/kat_history/{{suite}}/{{item[0]}}">History</a></td> + </tr> + {% endfor %} + {% endfor %} + </table> + <br/> + <br/> + <h3>Files that were OK</h3> + <table id="tblResultsOK"> + <thead> + <td>Suite</td> + <td>Kat</td> + <td>Max Rel. Difference</td> + <td>View .kat</td> + <td>View .out</td> + <td>View ref</td> + <td>View Diff</td> + <td>View History + </thead> + {% for suite in kats_ok.keys() %} + {% for item in kats_ok[suite] %} <tr> <td>{{ suite }}</td> <td>{{item[0]}}</td> @@ -44,7 +77,6 @@ {% endfor %} {% endfor %} </table> - </div> </body> <script type="text/JavaScript" src="http://code.jquery.com/jquery-1.10.1.min.js"></script> @@ -72,13 +104,29 @@ return ((a < b) ? 1 : ((a > b) ? -1 : 0)); } } ); - gtable = $('#tblResults').dataTable({ + gtable = $('#tblResultsOK').dataTable({ "iDisplayLength":250, "aLengthMenu": [[-1], ['All']], "aoColumns": [ null, null, { "sType": "numeric" }, + {"bSearchable": false, "bSortable": false}, + {"bSearchable": false, "bSortable": false}, + {"bSearchable": false, "bSortable": false}, + {"bSearchable": false, "bSortable": false}, + {"bSearchable": false, "bSortable": false} + ] + } ); + + gtable = $('#tblResultsERR').dataTable({ + "iDisplayLength":250, + "aLengthMenu": [[-1], ['All']], + "aoColumns": [ + null, + null, + { "sType": "numeric" }, + {"bSearchable": false, "bSortable": false}, {"bSearchable": false, "bSortable": false}, {"bSearchable": false, "bSortable": false}, {"bSearchable": false, "bSortable": false}, diff --git a/pykat/testing/web/web_interface.py b/pykat/testing/web/web_interface.py index e659161..be1b4e6 100644 --- a/pykat/testing/web/web_interface.py +++ b/pykat/testing/web/web_interface.py @@ -144,15 +144,23 @@ class FinesseProcessWatcher(Thread): runexception = (str(err.err), str(err.out)); else: runexception = ("","") - + + #check if any errors + v = self.process_to_watch.output_differences[suite][kat.replace(".kat",".out")] + if len(v) > 0: + error = True + else: + error = False + kats_run.append(dict(suite = suite, kat = kat, max_diff = float(max_diff), - runexception = runexception)) + runexception = runexception, + error=error)) out = utils.git(["log",str(self.process_to_watch.get_version()),"-1",'--pretty="%ai"'],cwd=os.path.join(app.instance_path,"finesse_src")) commit_date = out[0].replace("\\","").replace('"','').replace("\n","") - + try: doc = db.get('kattest', key, with_doc=True)["doc"] @@ -695,6 +703,30 @@ def finesse_view_diff(view_test_id, suite, kat): return difflib.HtmlDiff().make_file(ref,out,REF_FILE,OUT_FILE,context=False) +@app.route('/finesse/view/exception/<view_test_id>/<suite>/<kat>/', methods=["GET"]) +def finesse_view_exception(view_test_id,suite,kat): + view_test_id = int(view_test_id) + + doc = db.get('testid',view_test_id,with_doc=True) + + doc = doc["doc"] + response = None + + + if "kats_run" in doc: + for run in doc["kats_run"]: + if run["kat"] == kat: + print "\n\n".join(run["runexception"]) + response = make_response("\n\n".join(run["runexception"])) + + if response is None: + response = make_response("No error message") + + response.headers["Content-type"] = "text/plain" + return response + + + @app.route('/finesse/view/<view_test_id>/', methods=["GET"]) def finesse_view(view_test_id): @@ -705,15 +737,24 @@ def finesse_view(view_test_id): doc = db.get('testid',view_test_id,with_doc=True) doc = doc["doc"] - kats = {} + kats_err = {} + kats_ok = {} if "kats_run" in doc: for run in doc["kats_run"]: suite = run["suite"] - if not suite in kats: - kats[suite] = [] - - kats[suite].append((run["kat"], run["max_diff"], run["runexception"])) + + + if run["error"]: + if not suite in kats_err: + kats_err[suite] = [] + + kats_err[suite].append((run["kat"], run["max_diff"], run["runexception"])) + else: + if not suite in kats_ok: + kats_ok[suite] = [] + + kats_ok[suite].append((run["kat"], run["max_diff"], run["runexception"])) else: kats = {} @@ -734,7 +775,8 @@ def finesse_view(view_test_id): view_test_id = str(view_test_id), excp_traceback=traceback, excp_message=message, - kats = kats) + kats_ok = kats_ok, + kats_err = kats_err) #except RecordNotFound: # pass @@ -809,6 +851,7 @@ def checkLatestCommits(): if done_all and len(commits_not_tested) == 0 and len(commits) > 0: latest_commit_id_tested = commits[0] + elif len(commits_not_tested) > 0: kats = dict() -- GitLab