1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/sourceeditor/test/codemirror.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,222 @@ 1.4 +<!doctype html> 1.5 +<html> 1.6 + <head> 1.7 + <meta charset="utf-8"> 1.8 + <title>CodeMirror: Basic Tests</title> 1.9 + <link rel="stylesheet" href="chrome://browser/content/devtools/codemirror/codemirror.css"> 1.10 + <link rel="stylesheet" href="cm_mode_test.css"> 1.11 + <!--<link rel="stylesheet" href="../doc/docs.css">--> 1.12 + 1.13 + <script src="chrome://browser/content/devtools/codemirror/codemirror.js"></script> 1.14 + <script src="chrome://browser/content/devtools/codemirror/searchcursor.js"></script> 1.15 + <script src="chrome://browser/content/devtools/codemirror/dialog.js"></script> 1.16 + <script src="chrome://browser/content/devtools/codemirror/matchbrackets.js"></script> 1.17 + <script src="chrome://browser/content/devtools/codemirror/comment.js"></script> 1.18 + <script src="chrome://browser/content/devtools/codemirror/javascript.js"></script> 1.19 + <script src="chrome://browser/content/devtools/codemirror/vim.js"></script> 1.20 + <script src="chrome://browser/content/devtools/codemirror/emacs.js"></script> 1.21 + <script src="chrome://browser/content/devtools/codemirror/sublime.js"></script> 1.22 + 1.23 + <!--<script src="../addon/mode/overlay.js"></script> 1.24 + <script src="../addon/mode/multiplex.js"></script> 1.25 + <script src="../mode/xml/xml.js"></script>--> 1.26 + 1.27 + <style type="text/css"> 1.28 + .ok {color: #090;} 1.29 + .fail {color: #e00;} 1.30 + .error {color: #c90;} 1.31 + .done {font-weight: bold;} 1.32 + #progress { 1.33 + background: #45d; 1.34 + color: white; 1.35 + text-shadow: 0 0 1px #45d, 0 0 2px #45d, 0 0 3px #45d; 1.36 + font-weight: bold; 1.37 + white-space: pre; 1.38 + } 1.39 + #testground { 1.40 + visibility: hidden; 1.41 + } 1.42 + #testground.offscreen { 1.43 + visibility: visible; 1.44 + position: absolute; 1.45 + left: -10000px; 1.46 + top: -10000px; 1.47 + } 1.48 + .CodeMirror { border: 1px solid black; } 1.49 + </style> 1.50 + </head> 1.51 + <body> 1.52 + <h1>CodeMirror: Basic Tests</h1> 1.53 + 1.54 + <p>A limited set of programmatic sanity tests for CodeMirror.</p> 1.55 + 1.56 + <div style="border: 1px solid black; padding: 1px; max-width: 700px;"> 1.57 + <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> 1.58 + </div> 1.59 + <p id=status>Please enable JavaScript...</p> 1.60 + <div id=output></div> 1.61 + 1.62 + <div id=testground></div> 1.63 + 1.64 + <script src="cm_driver.js"></script> 1.65 + <script src="cm_test.js"></script> 1.66 + <script src="cm_comment_test.js"></script> 1.67 + <script src="cm_doc_test.js"></script> 1.68 + <script src="cm_driver.js"></script> 1.69 + <script src="cm_emacs_test.js"></script> 1.70 + <script src="cm_mode_test.js"></script> 1.71 + <script src="cm_mode_javascript_test.js"></script> 1.72 + <script src="cm_multi_test.js"></script> 1.73 + <script src="cm_search_test.js"></script> 1.74 + 1.75 + <!-- VIM and Emacs mode tests are in vimemacs.html 1.76 + <script src="cm_sublime_test.js"></script> 1.77 + <script src="cm_vim_test.js"></script> 1.78 + <script src="cm_emacs_test.js"></script> 1.79 + --> 1.80 + 1.81 + <!-- These modes/addons are not used by Editor 1.82 + <script src="doc_test.js"></script> 1.83 + <script src="../mode/css/css.js"></script> 1.84 + <script src="../mode/css/test.js"></script> 1.85 + <script src="../mode/css/scss_test.js"></script> 1.86 + <script src="../mode/xml/xml.js"></script> 1.87 + <script src="../mode/htmlmixed/htmlmixed.js"></script> 1.88 + <script src="../mode/ruby/ruby.js"></script> 1.89 + <script src="../mode/haml/haml.js"></script> 1.90 + <script src="../mode/haml/test.js"></script> 1.91 + <script src="../mode/markdown/markdown.js"></script> 1.92 + <script src="../mode/markdown/test.js"></script> 1.93 + <script src="../mode/gfm/gfm.js"></script> 1.94 + <script src="../mode/gfm/test.js"></script> 1.95 + <script src="../mode/stex/stex.js"></script> 1.96 + <script src="../mode/stex/test.js"></script> 1.97 + <script src="../mode/xquery/xquery.js"></script> 1.98 + <script src="../mode/xquery/test.js"></script> 1.99 + <script src="../addon/mode/multiplex_test.js"></script>--> 1.100 + 1.101 + <script> 1.102 + window.onload = runHarness; 1.103 + CodeMirror.on(window, 'hashchange', runHarness); 1.104 + 1.105 + function esc(str) { 1.106 + return str.replace(/[<&]/, function(ch) { return ch == "<" ? "<" : "&"; }); 1.107 + } 1.108 + 1.109 + var output = document.getElementById("output"), 1.110 + progress = document.getElementById("progress"), 1.111 + progressRan = document.getElementById("progress_ran").childNodes[0], 1.112 + progressTotal = document.getElementById("progress_total").childNodes[0]; 1.113 + 1.114 + var count = 0, 1.115 + failed = 0, 1.116 + skipped = 0, 1.117 + bad = "", 1.118 + running = false, // Flag that states tests are running 1.119 + quit = false, // Flag to quit tests ASAP 1.120 + verbose = false, // Adds message for *every* test to output 1.121 + phantom = false; 1.122 + 1.123 + function runHarness(){ 1.124 + if (running) { 1.125 + quit = true; 1.126 + setStatus("Restarting tests...", '', true); 1.127 + setTimeout(function(){runHarness();}, 500); 1.128 + return; 1.129 + } 1.130 + filters = []; 1.131 + verbose = false; 1.132 + if (window.location.hash.substr(1)){ 1.133 + var strings = window.location.hash.substr(1).split(","); 1.134 + while (strings.length) { 1.135 + var s = strings.shift(); 1.136 + if (s === "verbose") 1.137 + verbose = true; 1.138 + else 1.139 + filters.push(parseTestFilter(decodeURIComponent(s))); 1.140 + } 1.141 + } 1.142 + quit = false; 1.143 + running = true; 1.144 + setStatus("Loading tests..."); 1.145 + count = 0; 1.146 + failed = 0; 1.147 + skipped = 0; 1.148 + bad = ""; 1.149 + totalTests = countTests(); 1.150 + progressTotal.nodeValue = " of " + totalTests; 1.151 + progressRan.nodeValue = count; 1.152 + output.innerHTML = ''; 1.153 + document.getElementById("testground").innerHTML = "<form>" + 1.154 + "<textarea id=\"code\" name=\"code\"></textarea>" + 1.155 + "<input type=submit value=ok name=submit>" + 1.156 + "</form>"; 1.157 + runTests(displayTest); 1.158 + } 1.159 + 1.160 + function setStatus(message, className, force){ 1.161 + if (quit && !force) return; 1.162 + if (!message) throw("must provide message"); 1.163 + var status = document.getElementById("status").childNodes[0]; 1.164 + status.nodeValue = message; 1.165 + status.parentNode.className = className; 1.166 + } 1.167 + function addOutput(name, className, code){ 1.168 + var newOutput = document.createElement("dl"); 1.169 + var newTitle = document.createElement("dt"); 1.170 + newTitle.className = className; 1.171 + newTitle.appendChild(document.createTextNode(name)); 1.172 + newOutput.appendChild(newTitle); 1.173 + var newMessage = document.createElement("dd"); 1.174 + newMessage.innerHTML = code; 1.175 + newOutput.appendChild(newTitle); 1.176 + newOutput.appendChild(newMessage); 1.177 + output.appendChild(newOutput); 1.178 + } 1.179 + function displayTest(type, name, customMessage) { 1.180 + var message = "???"; 1.181 + if (type != "done" && type != "skipped") ++count; 1.182 + progress.style.width = (count * (progress.parentNode.clientWidth - 2) / totalTests) + "px"; 1.183 + progressRan.nodeValue = count; 1.184 + if (type == "ok") { 1.185 + message = "Test '" + name + "' succeeded"; 1.186 + if (!verbose) customMessage = false; 1.187 + } else if (type == "skipped") { 1.188 + message = "Test '" + name + "' skipped"; 1.189 + ++skipped; 1.190 + if (!verbose) customMessage = false; 1.191 + } else if (type == "expected") { 1.192 + message = "Test '" + name + "' failed as expected"; 1.193 + if (!verbose) customMessage = false; 1.194 + } else if (type == "error" || type == "fail") { 1.195 + ++failed; 1.196 + message = "Test '" + name + "' failed"; 1.197 + } else if (type == "done") { 1.198 + if (failed) { 1.199 + type += " fail"; 1.200 + message = failed + " failure" + (failed > 1 ? "s" : ""); 1.201 + } else if (count < totalTests) { 1.202 + failed = totalTests - count; 1.203 + type += " fail"; 1.204 + message = failed + " failure" + (failed > 1 ? "s" : ""); 1.205 + } else { 1.206 + type += " ok"; 1.207 + message = "All passed"; 1.208 + if (skipped) { 1.209 + message += " (" + skipped + " skipped)"; 1.210 + } 1.211 + } 1.212 + progressTotal.nodeValue = ''; 1.213 + customMessage = true; // Hack to avoid adding to output 1.214 + } 1.215 + if (window.mozilla_setStatus) 1.216 + mozilla_setStatus(message, type, customMessage); 1.217 + if (verbose && !customMessage) customMessage = message; 1.218 + setStatus(message, type); 1.219 + if (customMessage && customMessage.length > 0) { 1.220 + addOutput(name, type, customMessage); 1.221 + } 1.222 + } 1.223 + </script> 1.224 + </body> 1.225 +</html>