comparison env/lib/python3.9/site-packages/planemo/reports/custom.js @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1
2 var renderTestResults = function(testData) {
3 var summary = testData["summary"];
4 var numTests = summary["num_tests"];
5 var numProblems = summary["num_errors"] + summary["num_failures"] + summary["num_skips"];
6 var $overview = $("#overview-content");
7 var $progress = $(".progress");
8 if(numTests == 0) {
9 $overview.addClass("alert").addClass("alert-danger").text("No tests were executed.");
10 $progress.append($('<div class="progress-bar progress-bar-warning" role="progressbar" style="width: 100%" />'));
11 } else if(numProblems > 0) {
12 $overview.addClass("alert").addClass("alert-danger").text("There were problems with " + numProblems + " test(s) out of " + numTests + ".");
13 var problemPercent = (numProblems/(1.0 * numTests)) * 100.0;
14 var successPercent = 100.0 - problemPercent;
15 $progress.append($('<div class="progress-bar progress-bar-success" role="progressbar" style="width: ' + successPercent + '%" />'));
16 $progress.append($('<div class="progress-bar progress-bar-danger" role="progressbar" style="width: ' + problemPercent + '%" />'));
17 } else {
18 $overview.addClass("alert").addClass("alert-success").text("All " + numTests + " test(s) successfully executed.");
19 $progress.append($('<div class="progress-bar progress-bar-success" role="progressbar" style="width: 100%" />'));
20 }
21
22 var $sidebar = $("#nav-sidebar-tests");
23 for(var index in testData["tests"]) {
24 var test = testData["tests"][index];
25 var testResult = new TestResult(index, test);
26 var rawId = testResult.rawId;
27
28 var panelType = testResult.passed ? "panel-success panel-success-custom" : "panel-danger panel-danger-custom";
29 var $panel = $('<div class="panel">');
30 $panel.addClass(panelType);
31
32 var $panelHeading = $('<div class="panel-heading">');
33 var $panelTitle = $('<div class="panel-title">');
34 var $a = $('<a class="collapsed" data-toggle="collapse">');
35 $a.attr("id", rawId);
36 $a.attr("data-target", "#collapse" + index);
37 var testName = testResult.toolName + " (Test #" + (testResult.testIndex + 1) + (testResult.passed ? "" : ", Failed") + ")";
38 $a.text(testName);
39 var $navLink = $('<a>').attr('href', '#' + rawId).text(testName)
40 if(!testResult.passed) {
41 $navLink.addClass("text-danger text-danger-custom");
42 } else {
43 $navLink.addClass("text-success text-success-custom");
44 }
45 $sidebar.append($('<li>').append( $navLink ) );
46 $panelTitle.append($a)
47 $panelHeading.append($panelTitle);
48
49 var $panelBody = $('<div class="panel-body panel-collapse collapse" >');
50 $panelBody.attr("id", "collapse" + index);
51
52 var $status = $('<div>').text("status: " + testResult.status);
53 $panelBody.append($status);
54 if(testResult.problems.length > 0) {
55 var $problemsLabel = $('<div>').text("problems: ");
56 var $problemsDiv = $('<div style="margin-left:10px;">');
57 var $problemsUl = $('<ul>');
58 for(var problemIndex in testResult.problems) {
59 $problemsUl.append($('<li>').append($('<pre>').text(testResult.problems[problemIndex])));
60 }
61 $problemsDiv.append($problemsUl);
62 $panelBody.append($problemsLabel).append($problemsDiv);
63 }
64 var $commandLabel = $('<div>command:</div>');
65 var $stdoutLabel = $('<div>job standard output:</div>');
66 var $stderrLabel = $('<div>job standard error:</div>');
67 var $command;
68 if(testResult.command !== null) {
69 $command = $('<pre class="pre-scrollable" style="margin-left:10px;">').text(testResult.command);
70 } else {
71 $command = $('<div class="alert alert-warning" style="margin-left:10px;">').text("No command recorded.");
72 }
73 var $stdout;
74 if(testResult.stdout !== null) {
75 $stdout = $('<pre class="pre-scrollable" style="margin-left:10px;">').text(testResult.stdout);
76 } else {
77 $stdout = $('<div class="alert alert-warning" style="margin-left:10px;">').text("No standard output recorded.");
78 }
79 var $stderr;
80 if(testResult.stderr !== null) {
81 $stderr = $('<pre class="pre-scrollable" style="margin-left:10px;">').text(testResult.stderr);
82 } else {
83 $stderr = $('<div class="alert alert-warning" style="margin-left:10px;">').text("No standard error recorded.");
84 }
85 $panelBody
86 .append($commandLabel)
87 .append($command)
88 .append($stdoutLabel)
89 .append($stdout)
90 .append($stderrLabel)
91 .append($stderr);
92 if(!testResult.passed) {
93 var $logLabel = $('<div>log:</div>');
94 var $log = $('<pre class="pre-scrollable" style="margin-left: 10px;">').text(testResult.problemLog);
95 $panelBody.append($logLabel).append($log);
96 }
97
98 $panel.append($panelHeading).append($panelBody);
99 $(".main").append($panel);
100 }
101 }
102
103 var TestResult = function(index, data) {
104 this.rawId = data["id"];
105
106 var idParts = this.rawId.split("TestForTool_");
107 var testMethod = idParts[idParts.length-1];
108 var splitParts;
109 if(testMethod.indexOf(".test_tool_") > -1) {
110 splitParts = testMethod.split(".test_tool_");
111 } else {
112 splitParts = rSplit(testMethod, "-", 1);
113 }
114 var toolName = splitParts[0];
115 var testIndex;
116 if(data["data"]["test_index"] !== null) {
117 testIndex = data["data"]["test_index"];
118 } else {
119 testIndex = splitParts[1];
120 }
121 this.toolName = toolName;
122 this.testIndex = parseInt(testIndex === undefined ? index : testIndex);
123 this.status = data["data"]["status"];
124 var job = data["data"]["job"];
125 if(job) {
126 this.stdout = data["data"]["job"]["stdout"];
127 this.stderr = data["data"]["job"]["stderr"];
128 this.command = data["data"]["job"]["command_line"];
129 } else {
130 this.stdout = null;
131 this.stderr = null;
132 this.command = null;
133 }
134 this.problems = [];
135 var outputProblems = data["data"]["output_problems"] || [];
136 var executionProblem = data["data"]["execution_problem"];
137 this.problems.push.apply(this.problems, outputProblems);
138 if(executionProblem) {
139 this.problems.push(executionProblem);
140 }
141 this.problemLog = data["data"]["problem_log"];
142 this.passed = (this.status == "success");
143 }
144
145 // http://stackoverflow.com/questions/5202085/javascript-equivalent-of-pythons-rsplit
146 function rSplit(str, sep, maxsplit) {
147 var split = str.split(sep);
148 return maxsplit ? [ split.slice(0, -maxsplit).join(sep) ].concat(split.slice(-maxsplit)) : split;
149 }
150
151
152 // http://stackoverflow.com/questions/19491336/get-url-parameter-jquery
153 function getUrlParameter(sParam)
154 {
155 var sPageURL = window.location.search.substring(1);
156 var sURLVariables = sPageURL.split('&');
157 for (var i = 0; i < sURLVariables.length; i++)
158 {
159 var sParameterName = sURLVariables[i].split('=');
160 if (sParameterName[0] == sParam)
161 {
162 return sParameterName[1];
163 }
164 }
165 }