konacha 1.4.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.md +4 -0
 - data/README.md +8 -1
 - data/konacha.gemspec +1 -1
 - data/lib/konacha.rb +1 -1
 - data/vendor/assets/javascripts/chai.js +549 -431
 - data/vendor/assets/javascripts/mocha.js +230 -59
 - data/vendor/assets/stylesheets/mocha.css +18 -1
 - metadata +165 -172
 
| 
         @@ -535,12 +535,7 @@ var Suite = require('../suite') 
     | 
|
| 
       535 
535 
     | 
    
         
             
            module.exports = function(suite){
         
     | 
| 
       536 
536 
     | 
    
         
             
              var suites = [suite];
         
     | 
| 
       537 
537 
     | 
    
         | 
| 
       538 
     | 
    
         
            -
              suite.on('pre-require', function(context){
         
     | 
| 
       539 
     | 
    
         
            -
             
     | 
| 
       540 
     | 
    
         
            -
                // noop variants
         
     | 
| 
       541 
     | 
    
         
            -
             
     | 
| 
       542 
     | 
    
         
            -
                context.xdescribe = function(){};
         
     | 
| 
       543 
     | 
    
         
            -
                context.xit = function(){};
         
     | 
| 
      
 538 
     | 
    
         
            +
              suite.on('pre-require', function(context, file, mocha){
         
     | 
| 
       544 
539 
     | 
    
         | 
| 
       545 
540 
     | 
    
         
             
                /**
         
     | 
| 
       546 
541 
     | 
    
         
             
                 * Execute before running tests.
         
     | 
| 
         @@ -585,6 +580,30 @@ module.exports = function(suite){ 
     | 
|
| 
       585 
580 
     | 
    
         
             
                  suites.unshift(suite);
         
     | 
| 
       586 
581 
     | 
    
         
             
                  fn();
         
     | 
| 
       587 
582 
     | 
    
         
             
                  suites.shift();
         
     | 
| 
      
 583 
     | 
    
         
            +
                  return suite;
         
     | 
| 
      
 584 
     | 
    
         
            +
                };
         
     | 
| 
      
 585 
     | 
    
         
            +
             
     | 
| 
      
 586 
     | 
    
         
            +
                /**
         
     | 
| 
      
 587 
     | 
    
         
            +
                 * Pending describe.
         
     | 
| 
      
 588 
     | 
    
         
            +
                 */
         
     | 
| 
      
 589 
     | 
    
         
            +
             
     | 
| 
      
 590 
     | 
    
         
            +
                context.xdescribe =
         
     | 
| 
      
 591 
     | 
    
         
            +
                context.xcontext =
         
     | 
| 
      
 592 
     | 
    
         
            +
                context.describe.skip = function(title, fn){
         
     | 
| 
      
 593 
     | 
    
         
            +
                  var suite = Suite.create(suites[0], title);
         
     | 
| 
      
 594 
     | 
    
         
            +
                  suite.pending = true;
         
     | 
| 
      
 595 
     | 
    
         
            +
                  suites.unshift(suite);
         
     | 
| 
      
 596 
     | 
    
         
            +
                  fn();
         
     | 
| 
      
 597 
     | 
    
         
            +
                  suites.shift();
         
     | 
| 
      
 598 
     | 
    
         
            +
                };
         
     | 
| 
      
 599 
     | 
    
         
            +
             
     | 
| 
      
 600 
     | 
    
         
            +
                /**
         
     | 
| 
      
 601 
     | 
    
         
            +
                 * Exclusive suite.
         
     | 
| 
      
 602 
     | 
    
         
            +
                 */
         
     | 
| 
      
 603 
     | 
    
         
            +
             
     | 
| 
      
 604 
     | 
    
         
            +
                context.describe.only = function(title, fn){
         
     | 
| 
      
 605 
     | 
    
         
            +
                  var suite = context.describe(title, fn);
         
     | 
| 
      
 606 
     | 
    
         
            +
                  mocha.grep(suite.fullTitle());
         
     | 
| 
       588 
607 
     | 
    
         
             
                };
         
     | 
| 
       589 
608 
     | 
    
         | 
| 
       590 
609 
     | 
    
         
             
                /**
         
     | 
| 
         @@ -594,7 +613,30 @@ module.exports = function(suite){ 
     | 
|
| 
       594 
613 
     | 
    
         
             
                 */
         
     | 
| 
       595 
614 
     | 
    
         | 
| 
       596 
615 
     | 
    
         
             
                context.it = context.specify = function(title, fn){
         
     | 
| 
       597 
     | 
    
         
            -
                  suites[0] 
     | 
| 
      
 616 
     | 
    
         
            +
                  var suite = suites[0];
         
     | 
| 
      
 617 
     | 
    
         
            +
                  if (suite.pending) var fn = null;
         
     | 
| 
      
 618 
     | 
    
         
            +
                  var test = new Test(title, fn);
         
     | 
| 
      
 619 
     | 
    
         
            +
                  suite.addTest(test);
         
     | 
| 
      
 620 
     | 
    
         
            +
                  return test;
         
     | 
| 
      
 621 
     | 
    
         
            +
                };
         
     | 
| 
      
 622 
     | 
    
         
            +
             
     | 
| 
      
 623 
     | 
    
         
            +
                /**
         
     | 
| 
      
 624 
     | 
    
         
            +
                 * Exclusive test-case.
         
     | 
| 
      
 625 
     | 
    
         
            +
                 */
         
     | 
| 
      
 626 
     | 
    
         
            +
             
     | 
| 
      
 627 
     | 
    
         
            +
                context.it.only = function(title, fn){
         
     | 
| 
      
 628 
     | 
    
         
            +
                  var test = context.it(title, fn);
         
     | 
| 
      
 629 
     | 
    
         
            +
                  mocha.grep(test.fullTitle());
         
     | 
| 
      
 630 
     | 
    
         
            +
                };
         
     | 
| 
      
 631 
     | 
    
         
            +
             
     | 
| 
      
 632 
     | 
    
         
            +
                /**
         
     | 
| 
      
 633 
     | 
    
         
            +
                 * Pending test case.
         
     | 
| 
      
 634 
     | 
    
         
            +
                 */
         
     | 
| 
      
 635 
     | 
    
         
            +
             
     | 
| 
      
 636 
     | 
    
         
            +
                context.xit =
         
     | 
| 
      
 637 
     | 
    
         
            +
                context.xspecify =
         
     | 
| 
      
 638 
     | 
    
         
            +
                context.it.skip = function(title){
         
     | 
| 
      
 639 
     | 
    
         
            +
                  context.it(title);
         
     | 
| 
       598 
640 
     | 
    
         
             
                };
         
     | 
| 
       599 
641 
     | 
    
         
             
              });
         
     | 
| 
       600 
642 
     | 
    
         
             
            };
         
     | 
| 
         @@ -805,7 +847,7 @@ var Suite = require('../suite') 
     | 
|
| 
       805 
847 
     | 
    
         
             
            module.exports = function(suite){
         
     | 
| 
       806 
848 
     | 
    
         
             
              var suites = [suite];
         
     | 
| 
       807 
849 
     | 
    
         | 
| 
       808 
     | 
    
         
            -
              suite.on('pre-require', function(context){
         
     | 
| 
      
 850 
     | 
    
         
            +
              suite.on('pre-require', function(context, file, mocha){
         
     | 
| 
       809 
851 
     | 
    
         | 
| 
       810 
852 
     | 
    
         
             
                /**
         
     | 
| 
       811 
853 
     | 
    
         
             
                 * Execute before each test case.
         
     | 
| 
         @@ -850,6 +892,16 @@ module.exports = function(suite){ 
     | 
|
| 
       850 
892 
     | 
    
         
             
                  suites.unshift(suite);
         
     | 
| 
       851 
893 
     | 
    
         
             
                  fn();
         
     | 
| 
       852 
894 
     | 
    
         
             
                  suites.shift();
         
     | 
| 
      
 895 
     | 
    
         
            +
                  return suite;
         
     | 
| 
      
 896 
     | 
    
         
            +
                };
         
     | 
| 
      
 897 
     | 
    
         
            +
             
     | 
| 
      
 898 
     | 
    
         
            +
                /**
         
     | 
| 
      
 899 
     | 
    
         
            +
                 * Exclusive test-case.
         
     | 
| 
      
 900 
     | 
    
         
            +
                 */
         
     | 
| 
      
 901 
     | 
    
         
            +
             
     | 
| 
      
 902 
     | 
    
         
            +
                context.suite.only = function(title, fn){
         
     | 
| 
      
 903 
     | 
    
         
            +
                  var suite = context.suite(title, fn);
         
     | 
| 
      
 904 
     | 
    
         
            +
                  mocha.grep(suite.fullTitle());
         
     | 
| 
       853 
905 
     | 
    
         
             
                };
         
     | 
| 
       854 
906 
     | 
    
         | 
| 
       855 
907 
     | 
    
         
             
                /**
         
     | 
| 
         @@ -859,7 +911,18 @@ module.exports = function(suite){ 
     | 
|
| 
       859 
911 
     | 
    
         
             
                 */
         
     | 
| 
       860 
912 
     | 
    
         | 
| 
       861 
913 
     | 
    
         
             
                context.test = function(title, fn){
         
     | 
| 
       862 
     | 
    
         
            -
                   
     | 
| 
      
 914 
     | 
    
         
            +
                  var test = new Test(title, fn);
         
     | 
| 
      
 915 
     | 
    
         
            +
                  suites[0].addTest(test);
         
     | 
| 
      
 916 
     | 
    
         
            +
                  return test;
         
     | 
| 
      
 917 
     | 
    
         
            +
                };
         
     | 
| 
      
 918 
     | 
    
         
            +
             
     | 
| 
      
 919 
     | 
    
         
            +
                /**
         
     | 
| 
      
 920 
     | 
    
         
            +
                 * Exclusive test-case.
         
     | 
| 
      
 921 
     | 
    
         
            +
                 */
         
     | 
| 
      
 922 
     | 
    
         
            +
             
     | 
| 
      
 923 
     | 
    
         
            +
                context.test.only = function(title, fn){
         
     | 
| 
      
 924 
     | 
    
         
            +
                  var test = context.test(title, fn);
         
     | 
| 
      
 925 
     | 
    
         
            +
                  mocha.grep(test.fullTitle());
         
     | 
| 
       863 
926 
     | 
    
         
             
                };
         
     | 
| 
       864 
927 
     | 
    
         
             
              });
         
     | 
| 
       865 
928 
     | 
    
         
             
            };
         
     | 
| 
         @@ -985,13 +1048,16 @@ Mocha.prototype.ui = function(name){ 
     | 
|
| 
       985 
1048 
     | 
    
         
             
             * @api private
         
     | 
| 
       986 
1049 
     | 
    
         
             
             */
         
     | 
| 
       987 
1050 
     | 
    
         | 
| 
       988 
     | 
    
         
            -
            Mocha.prototype.loadFiles = function(){
         
     | 
| 
      
 1051 
     | 
    
         
            +
            Mocha.prototype.loadFiles = function(fn){
         
     | 
| 
      
 1052 
     | 
    
         
            +
              var self = this;
         
     | 
| 
       989 
1053 
     | 
    
         
             
              var suite = this.suite;
         
     | 
| 
      
 1054 
     | 
    
         
            +
              var pending = this.files.length;
         
     | 
| 
       990 
1055 
     | 
    
         
             
              this.files.forEach(function(file){
         
     | 
| 
       991 
1056 
     | 
    
         
             
                file = path.resolve(file);
         
     | 
| 
       992 
     | 
    
         
            -
                suite.emit('pre-require', global, file);
         
     | 
| 
       993 
     | 
    
         
            -
                suite.emit('require', require(file), file);
         
     | 
| 
       994 
     | 
    
         
            -
                suite.emit('post-require', global, file);
         
     | 
| 
      
 1057 
     | 
    
         
            +
                suite.emit('pre-require', global, file, self);
         
     | 
| 
      
 1058 
     | 
    
         
            +
                suite.emit('require', require(file), file, self);
         
     | 
| 
      
 1059 
     | 
    
         
            +
                suite.emit('post-require', global, file, self);
         
     | 
| 
      
 1060 
     | 
    
         
            +
                --pending || (fn && fn());
         
     | 
| 
       995 
1061 
     | 
    
         
             
              });
         
     | 
| 
       996 
1062 
     | 
    
         
             
            };
         
     | 
| 
       997 
1063 
     | 
    
         | 
| 
         @@ -1001,7 +1067,7 @@ Mocha.prototype.loadFiles = function(){ 
     | 
|
| 
       1001 
1067 
     | 
    
         
             
             * @api private
         
     | 
| 
       1002 
1068 
     | 
    
         
             
             */
         
     | 
| 
       1003 
1069 
     | 
    
         | 
| 
       1004 
     | 
    
         
            -
            Mocha.prototype. 
     | 
| 
      
 1070 
     | 
    
         
            +
            Mocha.prototype._growl = function(runner, reporter) {
         
     | 
| 
       1005 
1071 
     | 
    
         
             
              var notify = require('growl');
         
     | 
| 
       1006 
1072 
     | 
    
         | 
| 
       1007 
1073 
     | 
    
         
             
              runner.on('end', function(){
         
     | 
| 
         @@ -1034,6 +1100,55 @@ Mocha.prototype.grep = function(re){ 
     | 
|
| 
       1034 
1100 
     | 
    
         
             
              return this;
         
     | 
| 
       1035 
1101 
     | 
    
         
             
            };
         
     | 
| 
       1036 
1102 
     | 
    
         | 
| 
      
 1103 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1104 
     | 
    
         
            +
             * Invert `.grep()` matches.
         
     | 
| 
      
 1105 
     | 
    
         
            +
             *
         
     | 
| 
      
 1106 
     | 
    
         
            +
             * @return {Mocha}
         
     | 
| 
      
 1107 
     | 
    
         
            +
             * @api public
         
     | 
| 
      
 1108 
     | 
    
         
            +
             */
         
     | 
| 
      
 1109 
     | 
    
         
            +
             
     | 
| 
      
 1110 
     | 
    
         
            +
            Mocha.prototype.invert = function(){
         
     | 
| 
      
 1111 
     | 
    
         
            +
              this.options.invert = true;
         
     | 
| 
      
 1112 
     | 
    
         
            +
              return this;
         
     | 
| 
      
 1113 
     | 
    
         
            +
            };
         
     | 
| 
      
 1114 
     | 
    
         
            +
             
     | 
| 
      
 1115 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1116 
     | 
    
         
            +
             * Ignore global leaks.
         
     | 
| 
      
 1117 
     | 
    
         
            +
             *
         
     | 
| 
      
 1118 
     | 
    
         
            +
             * @return {Mocha}
         
     | 
| 
      
 1119 
     | 
    
         
            +
             * @api public
         
     | 
| 
      
 1120 
     | 
    
         
            +
             */
         
     | 
| 
      
 1121 
     | 
    
         
            +
             
     | 
| 
      
 1122 
     | 
    
         
            +
            Mocha.prototype.ignoreLeaks = function(){
         
     | 
| 
      
 1123 
     | 
    
         
            +
              this.options.ignoreLeaks = true;
         
     | 
| 
      
 1124 
     | 
    
         
            +
              return this;
         
     | 
| 
      
 1125 
     | 
    
         
            +
            };
         
     | 
| 
      
 1126 
     | 
    
         
            +
             
     | 
| 
      
 1127 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1128 
     | 
    
         
            +
             * Enable growl support.
         
     | 
| 
      
 1129 
     | 
    
         
            +
             *
         
     | 
| 
      
 1130 
     | 
    
         
            +
             * @return {Mocha}
         
     | 
| 
      
 1131 
     | 
    
         
            +
             * @api public
         
     | 
| 
      
 1132 
     | 
    
         
            +
             */
         
     | 
| 
      
 1133 
     | 
    
         
            +
             
     | 
| 
      
 1134 
     | 
    
         
            +
            Mocha.prototype.growl = function(){
         
     | 
| 
      
 1135 
     | 
    
         
            +
              this.options.growl = true;
         
     | 
| 
      
 1136 
     | 
    
         
            +
              return this;
         
     | 
| 
      
 1137 
     | 
    
         
            +
            };
         
     | 
| 
      
 1138 
     | 
    
         
            +
             
     | 
| 
      
 1139 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1140 
     | 
    
         
            +
             * Ignore `globals`.
         
     | 
| 
      
 1141 
     | 
    
         
            +
             *
         
     | 
| 
      
 1142 
     | 
    
         
            +
             * @param {Array} globals
         
     | 
| 
      
 1143 
     | 
    
         
            +
             * @return {Mocha}
         
     | 
| 
      
 1144 
     | 
    
         
            +
             * @api public
         
     | 
| 
      
 1145 
     | 
    
         
            +
             */
         
     | 
| 
      
 1146 
     | 
    
         
            +
             
     | 
| 
      
 1147 
     | 
    
         
            +
            Mocha.prototype.globals = function(globals){
         
     | 
| 
      
 1148 
     | 
    
         
            +
              this.options.globals = globals;
         
     | 
| 
      
 1149 
     | 
    
         
            +
              return this;
         
     | 
| 
      
 1150 
     | 
    
         
            +
            };
         
     | 
| 
      
 1151 
     | 
    
         
            +
             
     | 
| 
       1037 
1152 
     | 
    
         
             
            /**
         
     | 
| 
       1038 
1153 
     | 
    
         
             
             * Run tests and invoke `fn()` when complete.
         
     | 
| 
       1039 
1154 
     | 
    
         
             
             *
         
     | 
| 
         @@ -1049,9 +1164,9 @@ Mocha.prototype.run = function(fn){ 
     | 
|
| 
       1049 
1164 
     | 
    
         
             
              var runner = new exports.Runner(suite);
         
     | 
| 
       1050 
1165 
     | 
    
         
             
              var reporter = new this._reporter(runner);
         
     | 
| 
       1051 
1166 
     | 
    
         
             
              runner.ignoreLeaks = options.ignoreLeaks;
         
     | 
| 
       1052 
     | 
    
         
            -
              if (options.grep) runner.grep(options.grep);
         
     | 
| 
      
 1167 
     | 
    
         
            +
              if (options.grep) runner.grep(options.grep, options.invert);
         
     | 
| 
       1053 
1168 
     | 
    
         
             
              if (options.globals) runner.globals(options.globals);
         
     | 
| 
       1054 
     | 
    
         
            -
              if (options.growl) this. 
     | 
| 
      
 1169 
     | 
    
         
            +
              if (options.growl) this._growl(runner, reporter);
         
     | 
| 
       1055 
1170 
     | 
    
         
             
              return runner.run(fn);
         
     | 
| 
       1056 
1171 
     | 
    
         
             
            };
         
     | 
| 
       1057 
1172 
     | 
    
         | 
| 
         @@ -1134,7 +1249,7 @@ exports.colors = { 
     | 
|
| 
       1134 
1249 
     | 
    
         | 
| 
       1135 
1250 
     | 
    
         
             
            var color = exports.color = function(type, str) {
         
     | 
| 
       1136 
1251 
     | 
    
         
             
              if (!exports.useColors) return str;
         
     | 
| 
       1137 
     | 
    
         
            -
              return '\ 
     | 
| 
      
 1252 
     | 
    
         
            +
              return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m';
         
     | 
| 
       1138 
1253 
     | 
    
         
             
            };
         
     | 
| 
       1139 
1254 
     | 
    
         | 
| 
       1140 
1255 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -1157,19 +1272,19 @@ exports.window = { 
     | 
|
| 
       1157 
1272 
     | 
    
         | 
| 
       1158 
1273 
     | 
    
         
             
            exports.cursor = {
         
     | 
| 
       1159 
1274 
     | 
    
         
             
              hide: function(){
         
     | 
| 
       1160 
     | 
    
         
            -
                process.stdout.write('\ 
     | 
| 
      
 1275 
     | 
    
         
            +
                process.stdout.write('\u001b[?25l');
         
     | 
| 
       1161 
1276 
     | 
    
         
             
              },
         
     | 
| 
       1162 
1277 
     | 
    
         | 
| 
       1163 
1278 
     | 
    
         
             
              show: function(){
         
     | 
| 
       1164 
     | 
    
         
            -
                process.stdout.write('\ 
     | 
| 
      
 1279 
     | 
    
         
            +
                process.stdout.write('\u001b[?25h');
         
     | 
| 
       1165 
1280 
     | 
    
         
             
              },
         
     | 
| 
       1166 
1281 
     | 
    
         | 
| 
       1167 
1282 
     | 
    
         
             
              deleteLine: function(){
         
     | 
| 
       1168 
     | 
    
         
            -
                process.stdout.write('\ 
     | 
| 
      
 1283 
     | 
    
         
            +
                process.stdout.write('\u001b[2K');
         
     | 
| 
       1169 
1284 
     | 
    
         
             
              },
         
     | 
| 
       1170 
1285 
     | 
    
         | 
| 
       1171 
1286 
     | 
    
         
             
              beginningOfLine: function(){
         
     | 
| 
       1172 
     | 
    
         
            -
                process.stdout.write('\ 
     | 
| 
      
 1287 
     | 
    
         
            +
                process.stdout.write('\u001b[0G');
         
     | 
| 
       1173 
1288 
     | 
    
         
             
              },
         
     | 
| 
       1174 
1289 
     | 
    
         | 
| 
       1175 
1290 
     | 
    
         
             
              CR: function(){
         
     | 
| 
         @@ -1504,6 +1619,7 @@ function Dot(runner) { 
     | 
|
| 
       1504 
1619 
     | 
    
         
             
              var self = this
         
     | 
| 
       1505 
1620 
     | 
    
         
             
                , stats = this.stats
         
     | 
| 
       1506 
1621 
     | 
    
         
             
                , width = Base.window.width * .75 | 0
         
     | 
| 
      
 1622 
     | 
    
         
            +
                , c = '․'
         
     | 
| 
       1507 
1623 
     | 
    
         
             
                , n = 0;
         
     | 
| 
       1508 
1624 
     | 
    
         | 
| 
       1509 
1625 
     | 
    
         
             
              runner.on('start', function(){
         
     | 
| 
         @@ -1511,21 +1627,21 @@ function Dot(runner) { 
     | 
|
| 
       1511 
1627 
     | 
    
         
             
              });
         
     | 
| 
       1512 
1628 
     | 
    
         | 
| 
       1513 
1629 
     | 
    
         
             
              runner.on('pending', function(test){
         
     | 
| 
       1514 
     | 
    
         
            -
                process.stdout.write(color('pending',  
     | 
| 
      
 1630 
     | 
    
         
            +
                process.stdout.write(color('pending', c));
         
     | 
| 
       1515 
1631 
     | 
    
         
             
              });
         
     | 
| 
       1516 
1632 
     | 
    
         | 
| 
       1517 
1633 
     | 
    
         
             
              runner.on('pass', function(test){
         
     | 
| 
       1518 
1634 
     | 
    
         
             
                if (++n % width == 0) process.stdout.write('\n  ');
         
     | 
| 
       1519 
1635 
     | 
    
         
             
                if ('slow' == test.speed) {
         
     | 
| 
       1520 
     | 
    
         
            -
                  process.stdout.write(color('bright yellow',  
     | 
| 
      
 1636 
     | 
    
         
            +
                  process.stdout.write(color('bright yellow', c));
         
     | 
| 
       1521 
1637 
     | 
    
         
             
                } else {
         
     | 
| 
       1522 
     | 
    
         
            -
                  process.stdout.write(color(test.speed,  
     | 
| 
      
 1638 
     | 
    
         
            +
                  process.stdout.write(color(test.speed, c));
         
     | 
| 
       1523 
1639 
     | 
    
         
             
                }
         
     | 
| 
       1524 
1640 
     | 
    
         
             
              });
         
     | 
| 
       1525 
1641 
     | 
    
         | 
| 
       1526 
1642 
     | 
    
         
             
              runner.on('fail', function(test, err){
         
     | 
| 
       1527 
1643 
     | 
    
         
             
                if (++n % width == 0) process.stdout.write('\n  ');
         
     | 
| 
       1528 
     | 
    
         
            -
                process.stdout.write(color('fail',  
     | 
| 
      
 1644 
     | 
    
         
            +
                process.stdout.write(color('fail', c));
         
     | 
| 
       1529 
1645 
     | 
    
         
             
              });
         
     | 
| 
       1530 
1646 
     | 
    
         | 
| 
       1531 
1647 
     | 
    
         
             
              runner.on('end', function(){
         
     | 
| 
         @@ -1630,8 +1746,8 @@ exports = module.exports = HTML; 
     | 
|
| 
       1630 
1746 
     | 
    
         | 
| 
       1631 
1747 
     | 
    
         
             
            var statsTemplate = '<ul id="stats">'
         
     | 
| 
       1632 
1748 
     | 
    
         
             
              + '<li class="progress"><canvas width="40" height="40"></canvas></li>'
         
     | 
| 
       1633 
     | 
    
         
            -
              + '<li class="passes">passes 
     | 
| 
       1634 
     | 
    
         
            -
              + '<li class="failures">failures 
     | 
| 
      
 1749 
     | 
    
         
            +
              + '<li class="passes"><a href="#">passes:</a> <em>0</em></li>'
         
     | 
| 
      
 1750 
     | 
    
         
            +
              + '<li class="failures"><a href="#">failures:</a> <em>0</em></li>'
         
     | 
| 
       1635 
1751 
     | 
    
         
             
              + '<li class="duration">duration: <em>0</em>s</li>'
         
     | 
| 
       1636 
1752 
     | 
    
         
             
              + '</ul>';
         
     | 
| 
       1637 
1753 
     | 
    
         | 
| 
         @@ -1642,17 +1758,18 @@ var statsTemplate = '<ul id="stats">' 
     | 
|
| 
       1642 
1758 
     | 
    
         
             
             * @api public
         
     | 
| 
       1643 
1759 
     | 
    
         
             
             */
         
     | 
| 
       1644 
1760 
     | 
    
         | 
| 
       1645 
     | 
    
         
            -
            function HTML(runner) {
         
     | 
| 
      
 1761 
     | 
    
         
            +
            function HTML(runner, root) {
         
     | 
| 
       1646 
1762 
     | 
    
         
             
              Base.call(this, runner);
         
     | 
| 
       1647 
1763 
     | 
    
         | 
| 
       1648 
1764 
     | 
    
         
             
              var self = this
         
     | 
| 
       1649 
1765 
     | 
    
         
             
                , stats = this.stats
         
     | 
| 
       1650 
1766 
     | 
    
         
             
                , total = runner.total
         
     | 
| 
       1651 
     | 
    
         
            -
                , root = document.getElementById('mocha')
         
     | 
| 
       1652 
1767 
     | 
    
         
             
                , stat = fragment(statsTemplate)
         
     | 
| 
       1653 
1768 
     | 
    
         
             
                , items = stat.getElementsByTagName('li')
         
     | 
| 
       1654 
1769 
     | 
    
         
             
                , passes = items[1].getElementsByTagName('em')[0]
         
     | 
| 
      
 1770 
     | 
    
         
            +
                , passesLink = items[1].getElementsByTagName('a')[0]
         
     | 
| 
       1655 
1771 
     | 
    
         
             
                , failures = items[2].getElementsByTagName('em')[0]
         
     | 
| 
      
 1772 
     | 
    
         
            +
                , failuresLink = items[2].getElementsByTagName('a')[0]
         
     | 
| 
       1656 
1773 
     | 
    
         
             
                , duration = items[3].getElementsByTagName('em')[0]
         
     | 
| 
       1657 
1774 
     | 
    
         
             
                , canvas = stat.getElementsByTagName('canvas')[0]
         
     | 
| 
       1658 
1775 
     | 
    
         
             
                , report = fragment('<ul id="report"></ul>')
         
     | 
| 
         @@ -1660,13 +1777,33 @@ function HTML(runner) { 
     | 
|
| 
       1660 
1777 
     | 
    
         
             
                , progress
         
     | 
| 
       1661 
1778 
     | 
    
         
             
                , ctx
         
     | 
| 
       1662 
1779 
     | 
    
         | 
| 
      
 1780 
     | 
    
         
            +
              root = root || document.getElementById('mocha');
         
     | 
| 
      
 1781 
     | 
    
         
            +
             
     | 
| 
       1663 
1782 
     | 
    
         
             
              if (canvas.getContext) {
         
     | 
| 
      
 1783 
     | 
    
         
            +
                var ratio = window.devicePixelRatio || 1;
         
     | 
| 
      
 1784 
     | 
    
         
            +
                canvas.style.width = canvas.width;
         
     | 
| 
      
 1785 
     | 
    
         
            +
                canvas.style.height = canvas.height;
         
     | 
| 
      
 1786 
     | 
    
         
            +
                canvas.width *= ratio;
         
     | 
| 
      
 1787 
     | 
    
         
            +
                canvas.height *= ratio;
         
     | 
| 
       1664 
1788 
     | 
    
         
             
                ctx = canvas.getContext('2d');
         
     | 
| 
      
 1789 
     | 
    
         
            +
                ctx.scale(ratio, ratio);
         
     | 
| 
       1665 
1790 
     | 
    
         
             
                progress = new Progress;
         
     | 
| 
       1666 
1791 
     | 
    
         
             
              }
         
     | 
| 
       1667 
1792 
     | 
    
         | 
| 
       1668 
1793 
     | 
    
         
             
              if (!root) return error('#mocha div missing, add it to your document');
         
     | 
| 
       1669 
1794 
     | 
    
         | 
| 
      
 1795 
     | 
    
         
            +
              // pass toggle
         
     | 
| 
      
 1796 
     | 
    
         
            +
              on(passesLink, 'click', function () {
         
     | 
| 
      
 1797 
     | 
    
         
            +
                var className = /pass/.test(report.className) ? '' : ' pass';
         
     | 
| 
      
 1798 
     | 
    
         
            +
                report.className = report.className.replace(/fail|pass/g, '') + className;
         
     | 
| 
      
 1799 
     | 
    
         
            +
              });
         
     | 
| 
      
 1800 
     | 
    
         
            +
             
     | 
| 
      
 1801 
     | 
    
         
            +
              // failure toggle
         
     | 
| 
      
 1802 
     | 
    
         
            +
              on(failuresLink, 'click', function () {
         
     | 
| 
      
 1803 
     | 
    
         
            +
                var className = /fail/.test(report.className) ? '' : ' fail';
         
     | 
| 
      
 1804 
     | 
    
         
            +
                report.className = report.className.replace(/fail|pass/g, '') + className;
         
     | 
| 
      
 1805 
     | 
    
         
            +
              });
         
     | 
| 
      
 1806 
     | 
    
         
            +
             
     | 
| 
       1670 
1807 
     | 
    
         
             
              root.appendChild(stat);
         
     | 
| 
       1671 
1808 
     | 
    
         
             
              root.appendChild(report);
         
     | 
| 
       1672 
1809 
     | 
    
         | 
| 
         @@ -1676,7 +1813,8 @@ function HTML(runner) { 
     | 
|
| 
       1676 
1813 
     | 
    
         
             
                if (suite.root) return;
         
     | 
| 
       1677 
1814 
     | 
    
         | 
| 
       1678 
1815 
     | 
    
         
             
                // suite
         
     | 
| 
       1679 
     | 
    
         
            -
                var  
     | 
| 
      
 1816 
     | 
    
         
            +
                var grep = '^' + encodeURIComponent(utils.escapeRegexp(suite.fullTitle()));
         
     | 
| 
      
 1817 
     | 
    
         
            +
                var url = '?grep=' + grep;
         
     | 
| 
       1680 
1818 
     | 
    
         
             
                var el = fragment('<li class="suite"><h1><a href="%s">%s</a></h1></li>', url, escape(suite.title));
         
     | 
| 
       1681 
1819 
     | 
    
         | 
| 
       1682 
1820 
     | 
    
         
             
                // container
         
     | 
| 
         @@ -1734,17 +1872,16 @@ function HTML(runner) { 
     | 
|
| 
       1734 
1872 
     | 
    
         
             
                }
         
     | 
| 
       1735 
1873 
     | 
    
         | 
| 
       1736 
1874 
     | 
    
         
             
                // toggle code
         
     | 
| 
       1737 
     | 
    
         
            -
                var h2 = el.getElementsByTagName('h2')[0];
         
     | 
| 
       1738 
     | 
    
         
            -
             
     | 
| 
       1739 
     | 
    
         
            -
                on(h2, 'click', function(){
         
     | 
| 
       1740 
     | 
    
         
            -
                  pre.style.display = 'none' == pre.style.display
         
     | 
| 
       1741 
     | 
    
         
            -
                    ? 'block'
         
     | 
| 
       1742 
     | 
    
         
            -
                    : 'none';
         
     | 
| 
       1743 
     | 
    
         
            -
                });
         
     | 
| 
       1744 
     | 
    
         
            -
             
     | 
| 
       1745 
     | 
    
         
            -
                // code
         
     | 
| 
       1746 
1875 
     | 
    
         
             
                // TODO: defer
         
     | 
| 
       1747 
1876 
     | 
    
         
             
                if (!test.pending) {
         
     | 
| 
      
 1877 
     | 
    
         
            +
                  var h2 = el.getElementsByTagName('h2')[0];
         
     | 
| 
      
 1878 
     | 
    
         
            +
             
     | 
| 
      
 1879 
     | 
    
         
            +
                  on(h2, 'click', function(){
         
     | 
| 
      
 1880 
     | 
    
         
            +
                    pre.style.display = 'none' == pre.style.display
         
     | 
| 
      
 1881 
     | 
    
         
            +
                      ? 'inline-block'
         
     | 
| 
      
 1882 
     | 
    
         
            +
                      : 'none';
         
     | 
| 
      
 1883 
     | 
    
         
            +
                  });
         
     | 
| 
      
 1884 
     | 
    
         
            +
             
     | 
| 
       1748 
1885 
     | 
    
         
             
                  var pre = fragment('<pre><code>%e</code></pre>', utils.clean(test.fn.toString()));
         
     | 
| 
       1749 
1886 
     | 
    
         
             
                  el.appendChild(pre);
         
     | 
| 
       1750 
1887 
     | 
    
         
             
                  pre.style.display = 'none';
         
     | 
| 
         @@ -1804,6 +1941,7 @@ function on(el, event, fn) { 
     | 
|
| 
       1804 
1941 
     | 
    
         
             
                el.attachEvent('on' + event, fn);
         
     | 
| 
       1805 
1942 
     | 
    
         
             
              }
         
     | 
| 
       1806 
1943 
     | 
    
         
             
            }
         
     | 
| 
      
 1944 
     | 
    
         
            +
             
     | 
| 
       1807 
1945 
     | 
    
         
             
            }); // module: reporters/html.js
         
     | 
| 
       1808 
1946 
     | 
    
         | 
| 
       1809 
1947 
     | 
    
         
             
            require.register("reporters/index.js", function(module, exports, require){
         
     | 
| 
         @@ -2194,14 +2332,14 @@ function Landing(runner) { 
     | 
|
| 
       2194 
2332 
     | 
    
         
             
                }
         
     | 
| 
       2195 
2333 
     | 
    
         | 
| 
       2196 
2334 
     | 
    
         
             
                // render landing strip
         
     | 
| 
       2197 
     | 
    
         
            -
                stream.write('\ 
     | 
| 
      
 2335 
     | 
    
         
            +
                stream.write('\u001b[4F\n\n');
         
     | 
| 
       2198 
2336 
     | 
    
         
             
                stream.write(runway());
         
     | 
| 
       2199 
2337 
     | 
    
         
             
                stream.write('\n  ');
         
     | 
| 
       2200 
2338 
     | 
    
         
             
                stream.write(color('runway', Array(col).join('⋅')));
         
     | 
| 
       2201 
2339 
     | 
    
         
             
                stream.write(plane)
         
     | 
| 
       2202 
2340 
     | 
    
         
             
                stream.write(color('runway', Array(width - col).join('⋅') + '\n'));
         
     | 
| 
       2203 
2341 
     | 
    
         
             
                stream.write(runway());
         
     | 
| 
       2204 
     | 
    
         
            -
                stream.write('\ 
     | 
| 
      
 2342 
     | 
    
         
            +
                stream.write('\u001b[0m');
         
     | 
| 
       2205 
2343 
     | 
    
         
             
              });
         
     | 
| 
       2206 
2344 
     | 
    
         | 
| 
       2207 
2345 
     | 
    
         
             
              runner.on('end', function(){
         
     | 
| 
         @@ -2411,9 +2549,9 @@ function Min(runner) { 
     | 
|
| 
       2411 
2549 
     | 
    
         | 
| 
       2412 
2550 
     | 
    
         
             
              runner.on('start', function(){
         
     | 
| 
       2413 
2551 
     | 
    
         
             
                // clear screen
         
     | 
| 
       2414 
     | 
    
         
            -
                process.stdout.write('\ 
     | 
| 
      
 2552 
     | 
    
         
            +
                process.stdout.write('\u001b[2J');
         
     | 
| 
       2415 
2553 
     | 
    
         
             
                // set cursor position
         
     | 
| 
       2416 
     | 
    
         
            -
                process.stdout.write('\ 
     | 
| 
      
 2554 
     | 
    
         
            +
                process.stdout.write('\u001b[1;3H');
         
     | 
| 
       2417 
2555 
     | 
    
         
             
              });
         
     | 
| 
       2418 
2556 
     | 
    
         | 
| 
       2419 
2557 
     | 
    
         
             
              runner.on('end', this.epilogue.bind(this));
         
     | 
| 
         @@ -2518,7 +2656,7 @@ NyanCat.prototype.drawScoreboard = function(){ 
     | 
|
| 
       2518 
2656 
     | 
    
         | 
| 
       2519 
2657 
     | 
    
         
             
              function draw(color, n) {
         
     | 
| 
       2520 
2658 
     | 
    
         
             
                write(' ');
         
     | 
| 
       2521 
     | 
    
         
            -
                write('\ 
     | 
| 
      
 2659 
     | 
    
         
            +
                write('\u001b[' + color + 'm' + n + '\u001b[0m');
         
     | 
| 
       2522 
2660 
     | 
    
         
             
                write('\n');
         
     | 
| 
       2523 
2661 
     | 
    
         
             
              }
         
     | 
| 
       2524 
2662 
     | 
    
         | 
| 
         @@ -2557,7 +2695,7 @@ NyanCat.prototype.drawRainbow = function(){ 
     | 
|
| 
       2557 
2695 
     | 
    
         
             
              var self = this;
         
     | 
| 
       2558 
2696 
     | 
    
         | 
| 
       2559 
2697 
     | 
    
         
             
              this.trajectories.forEach(function(line, index) {
         
     | 
| 
       2560 
     | 
    
         
            -
                write('\ 
     | 
| 
      
 2698 
     | 
    
         
            +
                write('\u001b[' + self.scoreboardWidth + 'C');
         
     | 
| 
       2561 
2699 
     | 
    
         
             
                write(line.join(''));
         
     | 
| 
       2562 
2700 
     | 
    
         
             
                write('\n');
         
     | 
| 
       2563 
2701 
     | 
    
         
             
              });
         
     | 
| 
         @@ -2577,7 +2715,7 @@ NyanCat.prototype.drawNyanCat = function(status) { 
     | 
|
| 
       2577 
2715 
     | 
    
         
             
              var startWidth = this.scoreboardWidth + this.trajectories[0].length;
         
     | 
| 
       2578 
2716 
     | 
    
         | 
| 
       2579 
2717 
     | 
    
         
             
              [0, 1, 2, 3].forEach(function(index) {
         
     | 
| 
       2580 
     | 
    
         
            -
                write('\ 
     | 
| 
      
 2718 
     | 
    
         
            +
                write('\u001b[' + startWidth + 'C');
         
     | 
| 
       2581 
2719 
     | 
    
         | 
| 
       2582 
2720 
     | 
    
         
             
                switch (index) {
         
     | 
| 
       2583 
2721 
     | 
    
         
             
                  case 0:
         
     | 
| 
         @@ -2625,7 +2763,7 @@ NyanCat.prototype.drawNyanCat = function(status) { 
     | 
|
| 
       2625 
2763 
     | 
    
         
             
             */
         
     | 
| 
       2626 
2764 
     | 
    
         | 
| 
       2627 
2765 
     | 
    
         
             
            NyanCat.prototype.cursorUp = function(n) {
         
     | 
| 
       2628 
     | 
    
         
            -
              write('\ 
     | 
| 
      
 2766 
     | 
    
         
            +
              write('\u001b[' + n + 'A');
         
     | 
| 
       2629 
2767 
     | 
    
         
             
            };
         
     | 
| 
       2630 
2768 
     | 
    
         | 
| 
       2631 
2769 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -2636,7 +2774,7 @@ NyanCat.prototype.cursorUp = function(n) { 
     | 
|
| 
       2636 
2774 
     | 
    
         
             
             */
         
     | 
| 
       2637 
2775 
     | 
    
         | 
| 
       2638 
2776 
     | 
    
         
             
            NyanCat.prototype.cursorDown = function(n) {
         
     | 
| 
       2639 
     | 
    
         
            -
              write('\ 
     | 
| 
      
 2777 
     | 
    
         
            +
              write('\u001b[' + n + 'B');
         
     | 
| 
       2640 
2778 
     | 
    
         
             
            };
         
     | 
| 
       2641 
2779 
     | 
    
         | 
| 
       2642 
2780 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -2672,7 +2810,7 @@ NyanCat.prototype.generateColors = function(){ 
     | 
|
| 
       2672 
2810 
     | 
    
         
             
            NyanCat.prototype.rainbowify = function(str){
         
     | 
| 
       2673 
2811 
     | 
    
         
             
              var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length];
         
     | 
| 
       2674 
2812 
     | 
    
         
             
              this.colorIndex += 1;
         
     | 
| 
       2675 
     | 
    
         
            -
              return '\ 
     | 
| 
      
 2813 
     | 
    
         
            +
              return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m';
         
     | 
| 
       2676 
2814 
     | 
    
         
             
            };
         
     | 
| 
       2677 
2815 
     | 
    
         | 
| 
       2678 
2816 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -2756,7 +2894,7 @@ function Progress(runner, options) { 
     | 
|
| 
       2756 
2894 
     | 
    
         
             
                  , i = width - n;
         
     | 
| 
       2757 
2895 
     | 
    
         | 
| 
       2758 
2896 
     | 
    
         
             
                cursor.CR();
         
     | 
| 
       2759 
     | 
    
         
            -
                process.stdout.write('\ 
     | 
| 
      
 2897 
     | 
    
         
            +
                process.stdout.write('\u001b[J');
         
     | 
| 
       2760 
2898 
     | 
    
         
             
                process.stdout.write(color('progress', '  ' + options.open));
         
     | 
| 
       2761 
2899 
     | 
    
         
             
                process.stdout.write(Array(n).join(options.complete));
         
     | 
| 
       2762 
2900 
     | 
    
         
             
                process.stdout.write(Array(i).join(options.incomplete));
         
     | 
| 
         @@ -3053,7 +3191,11 @@ function XUnit(runner) { 
     | 
|
| 
       3053 
3191 
     | 
    
         
             
                , tests = []
         
     | 
| 
       3054 
3192 
     | 
    
         
             
                , self = this;
         
     | 
| 
       3055 
3193 
     | 
    
         | 
| 
       3056 
     | 
    
         
            -
              runner.on(' 
     | 
| 
      
 3194 
     | 
    
         
            +
              runner.on('pass', function(test){
         
     | 
| 
      
 3195 
     | 
    
         
            +
                tests.push(test);
         
     | 
| 
      
 3196 
     | 
    
         
            +
              });
         
     | 
| 
      
 3197 
     | 
    
         
            +
              
         
     | 
| 
      
 3198 
     | 
    
         
            +
              runner.on('fail', function(test){
         
     | 
| 
       3057 
3199 
     | 
    
         
             
                tests.push(test);
         
     | 
| 
       3058 
3200 
     | 
    
         
             
              });
         
     | 
| 
       3059 
3201 
     | 
    
         | 
| 
         @@ -3138,7 +3280,7 @@ require.register("runnable.js", function(module, exports, require){ 
     | 
|
| 
       3138 
3280 
     | 
    
         
             
             */
         
     | 
| 
       3139 
3281 
     | 
    
         | 
| 
       3140 
3282 
     | 
    
         
             
            var EventEmitter = require('browser/events').EventEmitter
         
     | 
| 
       3141 
     | 
    
         
            -
              , debug = require('browser/debug')('runnable');
         
     | 
| 
      
 3283 
     | 
    
         
            +
              , debug = require('browser/debug')('mocha:runnable');
         
     | 
| 
       3142 
3284 
     | 
    
         | 
| 
       3143 
3285 
     | 
    
         
             
            /**
         
     | 
| 
       3144 
3286 
     | 
    
         
             
             * Save timer references to avoid Sinon interfering (see GH-237).
         
     | 
| 
         @@ -3334,7 +3476,7 @@ require.register("runner.js", function(module, exports, require){ 
     | 
|
| 
       3334 
3476 
     | 
    
         
             
             */
         
     | 
| 
       3335 
3477 
     | 
    
         | 
| 
       3336 
3478 
     | 
    
         
             
            var EventEmitter = require('browser/events').EventEmitter
         
     | 
| 
       3337 
     | 
    
         
            -
              , debug = require('browser/debug')('runner')
         
     | 
| 
      
 3479 
     | 
    
         
            +
              , debug = require('browser/debug')('mocha:runner')
         
     | 
| 
       3338 
3480 
     | 
    
         
             
              , Test = require('./test')
         
     | 
| 
       3339 
3481 
     | 
    
         
             
              , utils = require('./utils')
         
     | 
| 
       3340 
3482 
     | 
    
         
             
              , filter = utils.filter
         
     | 
| 
         @@ -3743,9 +3885,9 @@ Runner.prototype.runSuite = function(suite, fn){ 
     | 
|
| 
       3743 
3885 
     | 
    
         
             
             */
         
     | 
| 
       3744 
3886 
     | 
    
         | 
| 
       3745 
3887 
     | 
    
         
             
            Runner.prototype.uncaught = function(err){
         
     | 
| 
       3746 
     | 
    
         
            -
              debug('uncaught exception');
         
     | 
| 
      
 3888 
     | 
    
         
            +
              debug('uncaught exception %s', err.message);
         
     | 
| 
       3747 
3889 
     | 
    
         
             
              var runnable = this.currentRunnable;
         
     | 
| 
       3748 
     | 
    
         
            -
              if ('failed' == runnable.state) return;
         
     | 
| 
      
 3890 
     | 
    
         
            +
              if (!runnable || 'failed' == runnable.state) return;
         
     | 
| 
       3749 
3891 
     | 
    
         
             
              runnable.clearTimeout();
         
     | 
| 
       3750 
3892 
     | 
    
         
             
              err.uncaught = true;
         
     | 
| 
       3751 
3893 
     | 
    
         
             
              this.fail(runnable, err);
         
     | 
| 
         @@ -3827,7 +3969,7 @@ require.register("suite.js", function(module, exports, require){ 
     | 
|
| 
       3827 
3969 
     | 
    
         
             
             */
         
     | 
| 
       3828 
3970 
     | 
    
         | 
| 
       3829 
3971 
     | 
    
         
             
            var EventEmitter = require('browser/events').EventEmitter
         
     | 
| 
       3830 
     | 
    
         
            -
              , debug = require('browser/debug')('suite')
         
     | 
| 
      
 3972 
     | 
    
         
            +
              , debug = require('browser/debug')('mocha:suite')
         
     | 
| 
       3831 
3973 
     | 
    
         
             
              , utils = require('./utils')
         
     | 
| 
       3832 
3974 
     | 
    
         
             
              , Hook = require('./hook');
         
     | 
| 
       3833 
3975 
     | 
    
         | 
| 
         @@ -3853,6 +3995,7 @@ exports = module.exports = Suite; 
     | 
|
| 
       3853 
3995 
     | 
    
         
             
            exports.create = function(parent, title){
         
     | 
| 
       3854 
3996 
     | 
    
         
             
              var suite = new Suite(title, parent.ctx);
         
     | 
| 
       3855 
3997 
     | 
    
         
             
              suite.parent = parent;
         
     | 
| 
      
 3998 
     | 
    
         
            +
              if (parent.pending) suite.pending = true;
         
     | 
| 
       3856 
3999 
     | 
    
         
             
              title = suite.fullTitle();
         
     | 
| 
       3857 
4000 
     | 
    
         
             
              parent.addSuite(suite);
         
     | 
| 
       3858 
4001 
     | 
    
         
             
              return suite;
         
     | 
| 
         @@ -3872,6 +4015,7 @@ function Suite(title, ctx) { 
     | 
|
| 
       3872 
4015 
     | 
    
         
             
              this.ctx = ctx;
         
     | 
| 
       3873 
4016 
     | 
    
         
             
              this.suites = [];
         
     | 
| 
       3874 
4017 
     | 
    
         
             
              this.tests = [];
         
     | 
| 
      
 4018 
     | 
    
         
            +
              this.pending = false;
         
     | 
| 
       3875 
4019 
     | 
    
         
             
              this._beforeEach = [];
         
     | 
| 
       3876 
4020 
     | 
    
         
             
              this._beforeAll = [];
         
     | 
| 
       3877 
4021 
     | 
    
         
             
              this._afterEach = [];
         
     | 
| 
         @@ -3945,6 +4089,7 @@ Suite.prototype.bail = function(bail){ 
     | 
|
| 
       3945 
4089 
     | 
    
         
             
             */
         
     | 
| 
       3946 
4090 
     | 
    
         | 
| 
       3947 
4091 
     | 
    
         
             
            Suite.prototype.beforeAll = function(fn){
         
     | 
| 
      
 4092 
     | 
    
         
            +
              if (this.pending) return this;
         
     | 
| 
       3948 
4093 
     | 
    
         
             
              var hook = new Hook('"before all" hook', fn);
         
     | 
| 
       3949 
4094 
     | 
    
         
             
              hook.parent = this;
         
     | 
| 
       3950 
4095 
     | 
    
         
             
              hook.timeout(this.timeout());
         
     | 
| 
         @@ -3963,6 +4108,7 @@ Suite.prototype.beforeAll = function(fn){ 
     | 
|
| 
       3963 
4108 
     | 
    
         
             
             */
         
     | 
| 
       3964 
4109 
     | 
    
         | 
| 
       3965 
4110 
     | 
    
         
             
            Suite.prototype.afterAll = function(fn){
         
     | 
| 
      
 4111 
     | 
    
         
            +
              if (this.pending) return this;
         
     | 
| 
       3966 
4112 
     | 
    
         
             
              var hook = new Hook('"after all" hook', fn);
         
     | 
| 
       3967 
4113 
     | 
    
         
             
              hook.parent = this;
         
     | 
| 
       3968 
4114 
     | 
    
         
             
              hook.timeout(this.timeout());
         
     | 
| 
         @@ -3981,6 +4127,7 @@ Suite.prototype.afterAll = function(fn){ 
     | 
|
| 
       3981 
4127 
     | 
    
         
             
             */
         
     | 
| 
       3982 
4128 
     | 
    
         | 
| 
       3983 
4129 
     | 
    
         
             
            Suite.prototype.beforeEach = function(fn){
         
     | 
| 
      
 4130 
     | 
    
         
            +
              if (this.pending) return this;
         
     | 
| 
       3984 
4131 
     | 
    
         
             
              var hook = new Hook('"before each" hook', fn);
         
     | 
| 
       3985 
4132 
     | 
    
         
             
              hook.parent = this;
         
     | 
| 
       3986 
4133 
     | 
    
         
             
              hook.timeout(this.timeout());
         
     | 
| 
         @@ -3999,6 +4146,7 @@ Suite.prototype.beforeEach = function(fn){ 
     | 
|
| 
       3999 
4146 
     | 
    
         
             
             */
         
     | 
| 
       4000 
4147 
     | 
    
         | 
| 
       4001 
4148 
     | 
    
         
             
            Suite.prototype.afterEach = function(fn){
         
     | 
| 
      
 4149 
     | 
    
         
            +
              if (this.pending) return this;
         
     | 
| 
       4002 
4150 
     | 
    
         
             
              var hook = new Hook('"after each" hook', fn);
         
     | 
| 
       4003 
4151 
     | 
    
         
             
              hook.parent = this;
         
     | 
| 
       4004 
4152 
     | 
    
         
             
              hook.timeout(this.timeout());
         
     | 
| 
         @@ -4138,7 +4286,7 @@ require.register("utils.js", function(module, exports, require){ 
     | 
|
| 
       4138 
4286 
     | 
    
         
             
            var fs = require('browser/fs')
         
     | 
| 
       4139 
4287 
     | 
    
         
             
              , path = require('browser/path')
         
     | 
| 
       4140 
4288 
     | 
    
         
             
              , join = path.join
         
     | 
| 
       4141 
     | 
    
         
            -
              , debug = require('browser/debug')('watch');
         
     | 
| 
      
 4289 
     | 
    
         
            +
              , debug = require('browser/debug')('mocha:watch');
         
     | 
| 
       4142 
4290 
     | 
    
         | 
| 
       4143 
4291 
     | 
    
         
             
            /**
         
     | 
| 
       4144 
4292 
     | 
    
         
             
             * Ignored directories.
         
     | 
| 
         @@ -4336,7 +4484,7 @@ exports.clean = function(str) { 
     | 
|
| 
       4336 
4484 
     | 
    
         | 
| 
       4337 
4485 
     | 
    
         
             
              str = str.replace(re, '');
         
     | 
| 
       4338 
4486 
     | 
    
         | 
| 
       4339 
     | 
    
         
            -
              return  
     | 
| 
      
 4487 
     | 
    
         
            +
              return exports.trim(str);
         
     | 
| 
       4340 
4488 
     | 
    
         
             
            };
         
     | 
| 
       4341 
4489 
     | 
    
         | 
| 
       4342 
4490 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -4350,6 +4498,18 @@ exports.clean = function(str) { 
     | 
|
| 
       4350 
4498 
     | 
    
         
             
            exports.escapeRegexp = function(str){
         
     | 
| 
       4351 
4499 
     | 
    
         
             
              return str.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&");
         
     | 
| 
       4352 
4500 
     | 
    
         
             
            };
         
     | 
| 
      
 4501 
     | 
    
         
            +
             
     | 
| 
      
 4502 
     | 
    
         
            +
            /**
         
     | 
| 
      
 4503 
     | 
    
         
            +
             * Trim the given `str`.
         
     | 
| 
      
 4504 
     | 
    
         
            +
             *
         
     | 
| 
      
 4505 
     | 
    
         
            +
             * @param {String} str
         
     | 
| 
      
 4506 
     | 
    
         
            +
             * @return {String}
         
     | 
| 
      
 4507 
     | 
    
         
            +
             * @api private
         
     | 
| 
      
 4508 
     | 
    
         
            +
             */
         
     | 
| 
      
 4509 
     | 
    
         
            +
             
     | 
| 
      
 4510 
     | 
    
         
            +
            exports.trim = function(str){
         
     | 
| 
      
 4511 
     | 
    
         
            +
              return str.replace(/^\s+|\s+$/g, '');
         
     | 
| 
      
 4512 
     | 
    
         
            +
            };
         
     | 
| 
       4353 
4513 
     | 
    
         
             
            }); // module: utils.js
         
     | 
| 
       4354 
4514 
     | 
    
         
             
            /**
         
     | 
| 
       4355 
4515 
     | 
    
         
             
             * Node shims.
         
     | 
| 
         @@ -4424,6 +4584,8 @@ window.mocha = require('mocha'); 
     | 
|
| 
       4424 
4584 
     | 
    
         
             
              var utils = mocha.utils
         
     | 
| 
       4425 
4585 
     | 
    
         
             
                , options = {}
         
     | 
| 
       4426 
4586 
     | 
    
         | 
| 
      
 4587 
     | 
    
         
            +
              // TODO: use new Mocha here... not mocha.grep etc
         
     | 
| 
      
 4588 
     | 
    
         
            +
             
     | 
| 
       4427 
4589 
     | 
    
         
             
              mocha.suite = new mocha.Suite('', new mocha.Context());
         
     | 
| 
       4428 
4590 
     | 
    
         | 
| 
       4429 
4591 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -4468,6 +4630,14 @@ window.mocha = require('mocha'); 
     | 
|
| 
       4468 
4630 
     | 
    
         
             
                }, {});
         
     | 
| 
       4469 
4631 
     | 
    
         
             
              }
         
     | 
| 
       4470 
4632 
     | 
    
         | 
| 
      
 4633 
     | 
    
         
            +
              /**
         
     | 
| 
      
 4634 
     | 
    
         
            +
               * Grep.
         
     | 
| 
      
 4635 
     | 
    
         
            +
               */
         
     | 
| 
      
 4636 
     | 
    
         
            +
             
     | 
| 
      
 4637 
     | 
    
         
            +
              mocha.grep = function(str){
         
     | 
| 
      
 4638 
     | 
    
         
            +
                options.grep = new RegExp(utils.escapeRegexp(str));
         
     | 
| 
      
 4639 
     | 
    
         
            +
              };
         
     | 
| 
      
 4640 
     | 
    
         
            +
             
     | 
| 
       4471 
4641 
     | 
    
         
             
              /**
         
     | 
| 
       4472 
4642 
     | 
    
         
             
               * Setup mocha with the given setting options.
         
     | 
| 
       4473 
4643 
     | 
    
         
             
               */
         
     | 
| 
         @@ -4480,7 +4650,7 @@ window.mocha = require('mocha'); 
     | 
|
| 
       4480 
4650 
     | 
    
         
             
                if (!ui) throw new Error('invalid mocha interface "' + ui + '"');
         
     | 
| 
       4481 
4651 
     | 
    
         
             
                if (options.timeout) mocha.suite.timeout(options.timeout);
         
     | 
| 
       4482 
4652 
     | 
    
         
             
                ui(mocha.suite);
         
     | 
| 
       4483 
     | 
    
         
            -
                mocha.suite.emit('pre-require', window);
         
     | 
| 
      
 4653 
     | 
    
         
            +
                mocha.suite.emit('pre-require', window, null, mocha);
         
     | 
| 
       4484 
4654 
     | 
    
         
             
              };
         
     | 
| 
       4485 
4655 
     | 
    
         | 
| 
       4486 
4656 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -4494,6 +4664,7 @@ window.mocha = require('mocha'); 
     | 
|
| 
       4494 
4664 
     | 
    
         
             
                var reporter = new Reporter(runner);
         
     | 
| 
       4495 
4665 
     | 
    
         
             
                var query = parse(window.location.search || "");
         
     | 
| 
       4496 
4666 
     | 
    
         
             
                if (query.grep) runner.grep(new RegExp(query.grep));
         
     | 
| 
      
 4667 
     | 
    
         
            +
                if (options.grep) runner.grep(options.grep);
         
     | 
| 
       4497 
4668 
     | 
    
         
             
                if (options.ignoreLeaks) runner.ignoreLeaks = true;
         
     | 
| 
       4498 
4669 
     | 
    
         
             
                if (options.globals) runner.globals(options.globals);
         
     | 
| 
       4499 
4670 
     | 
    
         
             
                runner.globals(['location']);
         
     |