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: VIM/Emacs 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/sublime.js"></script>
18 <script src="chrome://browser/content/devtools/codemirror/emacs.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: VIM/Emacs 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_sublime_test.js"></script>
63 <script src="cm_vim_test.js"></script>
64 <script src="cm_emacs_test.js"></script>
66 <!-- Basic tests are in codemirror.html
67 <script src="cm_driver.js"></script>
68 <script src="cm_test.js"></script>
69 <script src="cm_comment_test.js"></script>
70 <script src="cm_doc_test.js"></script>
71 <script src="cm_driver.js"></script>
72 <script src="cm_emacs_test.js"></script>
73 <script src="cm_mode_test.js"></script>
74 <script src="cm_mode_javascript_test.js"></script>
75 <script src="cm_multi_test.js"></script>
76 <script src="cm_search_test.js"></script>
77 -->
79 <!-- These modes/addons are not used by Editor
80 <script src="doc_test.js"></script>
81 <script src="../mode/css/css.js"></script>
82 <script src="../mode/css/test.js"></script>
83 <script src="../mode/css/scss_test.js"></script>
84 <script src="../mode/xml/xml.js"></script>
85 <script src="../mode/htmlmixed/htmlmixed.js"></script>
86 <script src="../mode/ruby/ruby.js"></script>
87 <script src="../mode/haml/haml.js"></script>
88 <script src="../mode/haml/test.js"></script>
89 <script src="../mode/markdown/markdown.js"></script>
90 <script src="../mode/markdown/test.js"></script>
91 <script src="../mode/gfm/gfm.js"></script>
92 <script src="../mode/gfm/test.js"></script>
93 <script src="../mode/stex/stex.js"></script>
94 <script src="../mode/stex/test.js"></script>
95 <script src="../mode/xquery/xquery.js"></script>
96 <script src="../mode/xquery/test.js"></script>
97 <script src="../addon/mode/multiplex_test.js"></script>-->
99 <script>
100 window.onload = runHarness;
101 CodeMirror.on(window, 'hashchange', runHarness);
103 function esc(str) {
104 return str.replace(/[<&]/, function(ch) { return ch == "<" ? "<" : "&"; });
105 }
107 var output = document.getElementById("output"),
108 progress = document.getElementById("progress"),
109 progressRan = document.getElementById("progress_ran").childNodes[0],
110 progressTotal = document.getElementById("progress_total").childNodes[0];
112 var count = 0,
113 failed = 0,
114 skipped = 0,
115 bad = "",
116 running = false, // Flag that states tests are running
117 quit = false, // Flag to quit tests ASAP
118 verbose = false, // Adds message for *every* test to output
119 phantom = false;
121 function runHarness(){
122 if (running) {
123 quit = true;
124 setStatus("Restarting tests...", '', true);
125 setTimeout(function(){runHarness();}, 500);
126 return;
127 }
128 filters = [];
129 verbose = false;
130 if (window.location.hash.substr(1)){
131 var strings = window.location.hash.substr(1).split(",");
132 while (strings.length) {
133 var s = strings.shift();
134 if (s === "verbose")
135 verbose = true;
136 else
137 filters.push(parseTestFilter(decodeURIComponent(s)));
138 }
139 }
140 quit = false;
141 running = true;
142 setStatus("Loading tests...");
143 count = 0;
144 failed = 0;
145 skipped = 0;
146 bad = "";
147 totalTests = countTests();
148 progressTotal.nodeValue = " of " + totalTests;
149 progressRan.nodeValue = count;
150 output.innerHTML = '';
151 document.getElementById("testground").innerHTML = "<form>" +
152 "<textarea id=\"code\" name=\"code\"></textarea>" +
153 "<input type=submit value=ok name=submit>" +
154 "</form>";
155 runTests(displayTest);
156 }
158 function setStatus(message, className, force){
159 if (quit && !force) return;
160 if (!message) throw("must provide message");
161 var status = document.getElementById("status").childNodes[0];
162 status.nodeValue = message;
163 status.parentNode.className = className;
164 }
165 function addOutput(name, className, code){
166 var newOutput = document.createElement("dl");
167 var newTitle = document.createElement("dt");
168 newTitle.className = className;
169 newTitle.appendChild(document.createTextNode(name));
170 newOutput.appendChild(newTitle);
171 var newMessage = document.createElement("dd");
172 newMessage.innerHTML = code;
173 newOutput.appendChild(newTitle);
174 newOutput.appendChild(newMessage);
175 output.appendChild(newOutput);
176 }
177 function displayTest(type, name, customMessage) {
178 var message = "???";
179 if (type != "done" && type != "skipped") ++count;
180 progress.style.width = (count * (progress.parentNode.clientWidth - 2) / totalTests) + "px";
181 progressRan.nodeValue = count;
182 if (type == "ok") {
183 message = "Test '" + name + "' succeeded";
184 if (!verbose) customMessage = false;
185 } else if (type == "skipped") {
186 message = "Test '" + name + "' skipped";
187 ++skipped;
188 if (!verbose) customMessage = false;
189 } else if (type == "expected") {
190 message = "Test '" + name + "' failed as expected";
191 if (!verbose) customMessage = false;
192 } else if (type == "error" || type == "fail") {
193 ++failed;
194 message = "Test '" + name + "' failed";
195 } else if (type == "done") {
196 if (failed) {
197 type += " fail";
198 message = failed + " failure" + (failed > 1 ? "s" : "");
199 } else if (count < totalTests) {
200 failed = totalTests - count;
201 type += " fail";
202 message = failed + " failure" + (failed > 1 ? "s" : "");
203 } else {
204 type += " ok";
205 message = "All passed";
206 if (skipped) {
207 message += " (" + skipped + " skipped)";
208 }
209 }
210 progressTotal.nodeValue = '';
211 customMessage = true; // Hack to avoid adding to output
212 }
213 if (window.mozilla_setStatus)
214 mozilla_setStatus(message, type, customMessage);
215 if (verbose && !customMessage) customMessage = message;
216 setStatus(message, type);
217 if (customMessage && customMessage.length > 0) {
218 addOutput(name, type, customMessage);
219 }
220 }
221 </script>
222 </body>
223 </html>