Blame view

node_modules/less/test/browser/test-runner-template.tmpl 4.01 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  <!DOCTYPE html>
  <html lang="en">
    <head>
      <meta charset="utf-8">
      <script>
          // allow sauce to query for the jasmine report
          // because we have to load the page before starting the test, so the thing
          // sauce queries for might not be setup yet
          var JASMINE;
          if(Object.defineProperty) {
              Object.defineProperty(window, 'jasmine', {
                get: function() { return JASMINE; },
                set: function(jsm) { 
                  JASMINE = jsm || {};
                  if(!JASMINE.getJSReport || typeof JASMINE.getJSReport !== 'function') {
                      JASMINE.getJSReport = function() { };
                  }
                }
              });
          }
          else {
              window.jasmine = { getJSReport: function() { } };
          }
      </script>
      
      <title>Jasmine Spec Runner</title>
  
      <!-- generate script tags for tests -->
      <% var generateScriptTags = function(allScripts) { allScripts.forEach(function(script){ %>
          <script src="<%= script %>"></script>
      <% }); }; %>
  
      <!-- generate script tags for tests -->
      <% var toArray = function(scripts) {
          %>[<%
          scripts.forEach(function(scriptUrl, index){
              %>"<%= scriptUrl %>"<%
              if (index !== scripts.length -1) {
                  %>,<%
              }
          });
          %>]<%
          }; %>
  
      <!-- for each test, generate CSS/LESS link tags -->
      <% scripts.src.forEach(function(fullLessName) {
        var pathParts = fullLessName.split('/');
        var fullCssName = fullLessName.replace(/less/g, 'css');
        var lessName = pathParts[pathParts.length - 1];
        var name = lessName.split('.')[0]; %>
        <!-- the tags to be generated -->
        <link id="original-less:test-less-<%= name %>" title="test-less-<%= name %>" rel="stylesheet/less" type="text/css" href="<%= fullLessName %>">
        <link id="expected-less:test-less-<%= name %>" rel="stylesheet" type="text/css" href="<%= fullCssName %>">
      <% }); %>
  
      <!-- generate grunt-contrib-jasmine link tags -->
      <% css.forEach(function(style){ %>
        <link rel="stylesheet" type="text/css" href="<%= style %>">
      <% }) %>
  
      <script>
  
          function loadScript(url,callback){
              var script = document.createElement('script');
  
              if(document.documentMode === 8){
                  script.onreadystatechange = function(){
                      if (script.readyState === 'loaded'){
                          if (callback){callback()};
                      };
                  };
              } else {
                  script.onload = function(){
                      if (callback){callback()};
                  };
              };
              script.src = url;
              document.body.appendChild(script);
          };
  
          var jasmine = <% toArray([].concat(scripts.polyfills, scripts.jasmine, scripts.boot)) %>,
                  helpers = <% toArray(scripts.helpers) %>,
                  vendor = <% toArray(scripts.vendor) %>,
                  specs = <% toArray(scripts.specs) %>,
                  reporters = <% toArray([].concat(scripts.reporters)) %>,
                  setupScripts = jasmine.concat(helpers).concat(vendor),
                  runScripts = specs.concat(reporters);
          </script>
  
         <% generateScriptTags(scripts.polyfills); %>
         <% generateScriptTags(scripts.jasmine); %>
         <% generateScriptTags(scripts.boot); %>
         <% generateScriptTags(scripts.helpers); %>
         <% generateScriptTags(scripts.vendor); %>
  
         <script>
          setTimeout(function() {
  
              function addNextScript() {
                  // for sauce, see above. Additional step needed between loading jasmine and loading
                  // the js reporter
                  if (runScripts.length) {
                      var scriptSrc = runScripts.shift();
                      loadScript(scriptSrc, addNextScript);
                  } else {
                      window.onload();
                  }
              }
              addNextScript();
  
          },1000);
      </script>
    </head>
  
    <body>
    <!-- content -->
    </body>
  </html>