Blame view

node_modules/less/test/browser/generator/template.js 2.61 KB
7820380e   “wangming”   1
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
  const html = require('html-template-tag')
  
  /**
   * Generates HTML templates from list of test sheets
   */
  module.exports = (stylesheets, helpers, spec, less) => {
      if (!Array.isArray(helpers)) {
          helpers = [helpers]
      }
      return html`
  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="utf-8">
      
      <title>Less.js Spec Runner</title>
  
      <!-- for each test, generate CSS/LESS link tags -->
      $${stylesheets.map(function(fullLessName) {
          var pathParts = fullLessName.split('/');
          var fullCssName = fullLessName.replace(/\/less\//g, '/css/').replace(/less$/, 'css')
          var lessName = pathParts[pathParts.length - 1];
          var name = lessName.split('.')[0];
          return `
      <!-- 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}">
      ` }).join('')}
  
      $${helpers.map(helper => `
          <script src="../../${helper}"></script>
      `).join('')}
  
      <link rel="stylesheet" href="../../node_modules/mocha/mocha.css">
  </head>
  
  <body>
      <!-- content -->
      <div id="mocha"></div>
      <script src="../../node_modules/mocha/mocha.js"></script>
      <script src="../../node_modules/mocha-teamcity-reporter/lib/teamcityBrowser.js"></script>
      <script src="../../node_modules/chai/chai.js"></script>
      <script>
          expect = chai.expect
          mocha.setup({
              ui: 'bdd',
              timeout: 2500
          });
      </script>
      <script src="common.js"></script>
      <script src="../../${spec}"></script>
      <script src="${less || 'less.min.js'}"></script>
      <script>
          /** Saucelabs config */
          onload = function() {
              var runner = mocha.run();
  
              var failedTests = [];
              runner.on('end', function() {
                  window.mochaResults = runner.stats;
                  window.mochaResults.reports = failedTests;
              });
  
              runner.on('fail', logFailure);
  
              function logFailure(test, err){
                  var flattenTitles = function(test){
                      var titles = [];
                      while (test.parent.title) {
                          titles.push(test.parent.title);
                          test = test.parent;
                      }
                      return titles.reverse();
                  };
  
                  failedTests.push({name: test.title, result: false, message: err.message, stack: err.stack, titles: flattenTitles(test) });
              };
          };
      </script>
  </body>
  </html>
  `
  }