Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 <!doctype html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>CodeMirror: Basic Tests</title>
6 <link rel="stylesheet" href="chrome://browser/content/devtools/codemirror/codemirror.css">
7 <link rel="stylesheet" href="cm_mode_test.css">
8 <!--<link rel="stylesheet" href="../doc/docs.css">-->
10 <script src="chrome://browser/content/devtools/codemirror/codemirror.js"></script>
11 <script src="chrome://browser/content/devtools/codemirror/searchcursor.js"></script>
12 <script src="chrome://browser/content/devtools/codemirror/dialog.js"></script>
13 <script src="chrome://browser/content/devtools/codemirror/matchbrackets.js"></script>
14 <script src="chrome://browser/content/devtools/codemirror/comment.js"></script>
15 <script src="chrome://browser/content/devtools/codemirror/javascript.js"></script>
16 <script src="chrome://browser/content/devtools/codemirror/vim.js"></script>
17 <script src="chrome://browser/content/devtools/codemirror/emacs.js"></script>
18 <script src="chrome://browser/content/devtools/codemirror/sublime.js"></script>
20 <!--<script src="../addon/mode/overlay.js"></script>
21 <script src="../addon/mode/multiplex.js"></script>
22 <script src="../mode/xml/xml.js"></script>-->
24 <style type="text/css">
25 .ok {color: #090;}
26 .fail {color: #e00;}
27 .error {color: #c90;}
28 .done {font-weight: bold;}
29 #progress {
30 background: #45d;
31 color: white;
32 text-shadow: 0 0 1px #45d, 0 0 2px #45d, 0 0 3px #45d;
33 font-weight: bold;
34 white-space: pre;
35 }
36 #testground {
37 visibility: hidden;
38 }
39 #testground.offscreen {
40 visibility: visible;
41 position: absolute;
42 left: -10000px;
43 top: -10000px;
44 }
45 .CodeMirror { border: 1px solid black; }
46 </style>
47 </head>
48 <body>
49 <h1>CodeMirror: Basic Tests</h1>
51 <p>A limited set of programmatic sanity tests for CodeMirror.</p>
53 <div style="border: 1px solid black; padding: 1px; max-width: 700px;">
54 <div style="width: 0px;" id=progress><div style="padding: 3px;">Ran <span id="progress_ran">0</span><span id="progress_total"> of 0</span> tests</div></div>
55 </div>
56 <p id=status>Please enable JavaScript...</p>
57 <div id=output></div>
59 <div id=testground></div>
61 <script src="cm_driver.js"></script>
62 <script src="cm_test.js"></script>
63 <script src="cm_comment_test.js"></script>
64 <script src="cm_doc_test.js"></script>
65 <script src="cm_driver.js"></script>
66 <script src="cm_emacs_test.js"></script>
67 <script src="cm_mode_test.js"></script>
68 <script src="cm_mode_javascript_test.js"></script>
69 <script src="cm_multi_test.js"></script>
70 <script src="cm_search_test.js"></script>
72 <!-- VIM and Emacs mode tests are in vimemacs.html
73 <script src="cm_sublime_test.js"></script>
74 <script src="cm_vim_test.js"></script>
75 <script src="cm_emacs_test.js"></script>
76 -->
78 <!-- These modes/addons are not used by Editor
79 <script src="doc_test.js"></script>
80 <script src="../mode/css/css.js"></script>
81 <script src="../mode/css/test.js"></script>
82 <script src="../mode/css/scss_test.js"></script>
83 <script src="../mode/xml/xml.js"></script>
84 <script src="../mode/htmlmixed/htmlmixed.js"></script>
85 <script src="../mode/ruby/ruby.js"></script>
86 <script src="../mode/haml/haml.js"></script>
87 <script src="../mode/haml/test.js"></script>
88 <script src="../mode/markdown/markdown.js"></script>
89 <script src="../mode/markdown/test.js"></script>
90 <script src="../mode/gfm/gfm.js"></script>
91 <script src="../mode/gfm/test.js"></script>
92 <script src="../mode/stex/stex.js"></script>
93 <script src="../mode/stex/test.js"></script>
94 <script src="../mode/xquery/xquery.js"></script>
95 <script src="../mode/xquery/test.js"></script>
96 <script src="../addon/mode/multiplex_test.js"></script>-->
98 <script>
99 window.onload = runHarness;
100 CodeMirror.on(window, 'hashchange', runHarness);
102 function esc(str) {
103 return str.replace(/[<&]/, function(ch) { return ch == "<" ? "<" : "&"; });
104 }
106 var output = document.getElementById("output"),
107 progress = document.getElementById("progress"),
108 progressRan = document.getElementById("progress_ran").childNodes[0],
109 progressTotal = document.getElementById("progress_total").childNodes[0];
111 var count = 0,
112 failed = 0,
113 skipped = 0,
114 bad = "",
115 running = false, // Flag that states tests are running
116 quit = false, // Flag to quit tests ASAP
117 verbose = false, // Adds message for *every* test to output
118 phantom = false;
120 function runHarness(){
121 if (running) {
122 quit = true;
123 setStatus("Restarting tests...", '', true);
124 setTimeout(function(){runHarness();}, 500);
125 return;
126 }
127 filters = [];
128 verbose = false;
129 if (window.location.hash.substr(1)){
130 var strings = window.location.hash.substr(1).split(",");
131 while (strings.length) {
132 var s = strings.shift();
133 if (s === "verbose")
134 verbose = true;
135 else
136 filters.push(parseTestFilter(decodeURIComponent(s)));
137 }
138 }
139 quit = false;
140 running = true;
141 setStatus("Loading tests...");
142 count = 0;
143 failed = 0;
144 skipped = 0;
145 bad = "";
146 totalTests = countTests();
147 progressTotal.nodeValue = " of " + totalTests;
148 progressRan.nodeValue = count;
149 output.innerHTML = '';
150 document.getElementById("testground").innerHTML = "<form>" +
151 "<textarea id=\"code\" name=\"code\"></textarea>" +
152 "<input type=submit value=ok name=submit>" +
153 "</form>";
154 runTests(displayTest);
155 }
157 function setStatus(message, className, force){
158 if (quit && !force) return;
159 if (!message) throw("must provide message");
160 var status = document.getElementById("status").childNodes[0];
161 status.nodeValue = message;
162 status.parentNode.className = className;
163 }
164 function addOutput(name, className, code){
165 var newOutput = document.createElement("dl");
166 var newTitle = document.createElement("dt");
167 newTitle.className = className;
168 newTitle.appendChild(document.createTextNode(name));
169 newOutput.appendChild(newTitle);
170 var newMessage = document.createElement("dd");
171 newMessage.innerHTML = code;
172 newOutput.appendChild(newTitle);
173 newOutput.appendChild(newMessage);
174 output.appendChild(newOutput);
175 }
176 function displayTest(type, name, customMessage) {
177 var message = "???";
178 if (type != "done" && type != "skipped") ++count;
179 progress.style.width = (count * (progress.parentNode.clientWidth - 2) / totalTests) + "px";
180 progressRan.nodeValue = count;
181 if (type == "ok") {
182 message = "Test '" + name + "' succeeded";
183 if (!verbose) customMessage = false;
184 } else if (type == "skipped") {
185 message = "Test '" + name + "' skipped";
186 ++skipped;
187 if (!verbose) customMessage = false;
188 } else if (type == "expected") {
189 message = "Test '" + name + "' failed as expected";
190 if (!verbose) customMessage = false;
191 } else if (type == "error" || type == "fail") {
192 ++failed;
193 message = "Test '" + name + "' failed";
194 } else if (type == "done") {
195 if (failed) {
196 type += " fail";
197 message = failed + " failure" + (failed > 1 ? "s" : "");
198 } else if (count < totalTests) {
199 failed = totalTests - count;
200 type += " fail";
201 message = failed + " failure" + (failed > 1 ? "s" : "");
202 } else {
203 type += " ok";
204 message = "All passed";
205 if (skipped) {
206 message += " (" + skipped + " skipped)";
207 }
208 }
209 progressTotal.nodeValue = '';
210 customMessage = true; // Hack to avoid adding to output
211 }
212 if (window.mozilla_setStatus)
213 mozilla_setStatus(message, type, customMessage);
214 if (verbose && !customMessage) customMessage = message;
215 setStatus(message, type);
216 if (customMessage && customMessage.length > 0) {
217 addOutput(name, type, customMessage);
218 }
219 }
220 </script>
221 </body>
222 </html>