tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

vimemacs.html (8155B)


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