Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Side by Side Diff: polymer_0.5.0/bower_components/web-animations-js/node_modules/mocha/mocha.js

Issue 835333002: npm_modules: Add ignored web-animations-js files (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 ;(function(){ 1 ;(function(){
2 2
3 // CommonJS require() 3 // CommonJS require()
4 4
5 function require(p){ 5 function require(p){
6 var path = require.resolve(p) 6 var path = require.resolve(p)
7 , mod = require.modules[path]; 7 , mod = require.modules[path];
8 if (!mod) throw new Error('failed to require "' + p + '"'); 8 if (!mod) throw new Error('failed to require "' + p + '"');
9 if (!mod.exports) { 9 if (!mod.exports) {
10 mod.exports = {}; 10 mod.exports = {};
(...skipping 30 matching lines...) Expand all
41 if ('..' == seg) path.pop(); 41 if ('..' == seg) path.pop();
42 else if ('.' != seg) path.push(seg); 42 else if ('.' != seg) path.push(seg);
43 } 43 }
44 44
45 return require(path.join('/')); 45 return require(path.join('/'));
46 }; 46 };
47 }; 47 };
48 48
49 49
50 require.register("browser/debug.js", function(module, exports, require){ 50 require.register("browser/debug.js", function(module, exports, require){
51
51 module.exports = function(type){ 52 module.exports = function(type){
52 return function(){ 53 return function(){
53 } 54 }
54 }; 55 };
55 56
56 }); // module: browser/debug.js 57 }); // module: browser/debug.js
57 58
58 require.register("browser/diff.js", function(module, exports, require){ 59 require.register("browser/diff.js", function(module, exports, require){
59 /* See LICENSE file for terms of use */ 60 /* See LICENSE file for terms of use */
60 61
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 } 407 }
407 }; 408 };
408 })(); 409 })();
409 410
410 if (typeof module !== 'undefined') { 411 if (typeof module !== 'undefined') {
411 module.exports = JsDiff; 412 module.exports = JsDiff;
412 } 413 }
413 414
414 }); // module: browser/diff.js 415 }); // module: browser/diff.js
415 416
416 require.register("browser/escape-string-regexp.js", function(module, exports, re quire){ 417 require.register("browser/events.js", function(module, exports, require){
417 'use strict';
418 418
419 var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
420
421 module.exports = function (str) {
422 if (typeof str !== 'string') {
423 throw new TypeError('Expected a string');
424 }
425
426 return str.replace(matchOperatorsRe, '\\$&');
427 };
428
429 }); // module: browser/escape-string-regexp.js
430
431 require.register("browser/events.js", function(module, exports, require){
432 /** 419 /**
433 * Module exports. 420 * Module exports.
434 */ 421 */
435 422
436 exports.EventEmitter = EventEmitter; 423 exports.EventEmitter = EventEmitter;
437 424
438 /** 425 /**
439 * Check if `obj` is an array. 426 * Check if `obj` is an array.
440 */ 427 */
441 428
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 586
600 for (var i = 0, l = listeners.length; i < l; i++) { 587 for (var i = 0, l = listeners.length; i < l; i++) {
601 listeners[i].apply(this, args); 588 listeners[i].apply(this, args);
602 } 589 }
603 } else { 590 } else {
604 return false; 591 return false;
605 } 592 }
606 593
607 return true; 594 return true;
608 }; 595 };
609
610 }); // module: browser/events.js 596 }); // module: browser/events.js
611 597
612 require.register("browser/fs.js", function(module, exports, require){ 598 require.register("browser/fs.js", function(module, exports, require){
613 599
614 }); // module: browser/fs.js 600 }); // module: browser/fs.js
615 601
616 require.register("browser/glob.js", function(module, exports, require){
617
618 }); // module: browser/glob.js
619
620 require.register("browser/path.js", function(module, exports, require){ 602 require.register("browser/path.js", function(module, exports, require){
621 603
622 }); // module: browser/path.js 604 }); // module: browser/path.js
623 605
624 require.register("browser/progress.js", function(module, exports, require){ 606 require.register("browser/progress.js", function(module, exports, require){
625 /** 607 /**
626 * Expose `Progress`. 608 * Expose `Progress`.
627 */ 609 */
628 610
629 module.exports = Progress; 611 module.exports = Progress;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
711 693
712 Progress.prototype.draw = function(ctx){ 694 Progress.prototype.draw = function(ctx){
713 try { 695 try {
714 var percent = Math.min(this.percent, 100) 696 var percent = Math.min(this.percent, 100)
715 , size = this._size 697 , size = this._size
716 , half = size / 2 698 , half = size / 2
717 , x = half 699 , x = half
718 , y = half 700 , y = half
719 , rad = half - 1 701 , rad = half - 1
720 , fontSize = this._fontSize; 702 , fontSize = this._fontSize;
721 703
722 ctx.font = fontSize + 'px ' + this._font; 704 ctx.font = fontSize + 'px ' + this._font;
723 705
724 var angle = Math.PI * 2 * (percent / 100); 706 var angle = Math.PI * 2 * (percent / 100);
725 ctx.clearRect(0, 0, size, size); 707 ctx.clearRect(0, 0, size, size);
726 708
727 // outer circle 709 // outer circle
728 ctx.strokeStyle = '#9f9f9f'; 710 ctx.strokeStyle = '#9f9f9f';
729 ctx.beginPath(); 711 ctx.beginPath();
730 ctx.arc(x, y, rad, 0, angle, false); 712 ctx.arc(x, y, rad, 0, angle, false);
731 ctx.stroke(); 713 ctx.stroke();
732 714
733 // inner circle 715 // inner circle
734 ctx.strokeStyle = '#eee'; 716 ctx.strokeStyle = '#eee';
735 ctx.beginPath(); 717 ctx.beginPath();
736 ctx.arc(x, y, rad - 1, 0, angle, true); 718 ctx.arc(x, y, rad - 1, 0, angle, true);
737 ctx.stroke(); 719 ctx.stroke();
738 720
739 // text 721 // text
740 var text = this._text || (percent | 0) + '%' 722 var text = this._text || (percent | 0) + '%'
741 , w = ctx.measureText(text).width; 723 , w = ctx.measureText(text).width;
742 724
743 ctx.fillText( 725 ctx.fillText(
744 text 726 text
745 , x - w / 2 + 1 727 , x - w / 2 + 1
746 , y + fontSize / 2 - 1); 728 , y + fontSize / 2 - 1);
747 } catch (ex) {} //don't fail if we can't render progress 729 } catch (ex) {} //don't fail if we can't render progress
748 return this; 730 return this;
749 }; 731 };
750 732
751 }); // module: browser/progress.js 733 }); // module: browser/progress.js
752 734
753 require.register("browser/tty.js", function(module, exports, require){ 735 require.register("browser/tty.js", function(module, exports, require){
736
754 exports.isatty = function(){ 737 exports.isatty = function(){
755 return true; 738 return true;
756 }; 739 };
757 740
758 exports.getWindowSize = function(){ 741 exports.getWindowSize = function(){
759 if ('innerHeight' in global) { 742 if ('innerHeight' in global) {
760 return [global.innerHeight, global.innerWidth]; 743 return [global.innerHeight, global.innerWidth];
761 } else { 744 } else {
762 // In a Web Worker, the DOM Window is not available. 745 // In a Web Worker, the DOM Window is not available.
763 return [640, 480]; 746 return [640, 480];
764 } 747 }
765 }; 748 };
766 749
767 }); // module: browser/tty.js 750 }); // module: browser/tty.js
768 751
769 require.register("context.js", function(module, exports, require){ 752 require.register("context.js", function(module, exports, require){
753
770 /** 754 /**
771 * Expose `Context`. 755 * Expose `Context`.
772 */ 756 */
773 757
774 module.exports = Context; 758 module.exports = Context;
775 759
776 /** 760 /**
777 * Initialize a new `Context`. 761 * Initialize a new `Context`.
778 * 762 *
779 * @api private 763 * @api private
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 return JSON.stringify(this, function(key, val){ 831 return JSON.stringify(this, function(key, val){
848 if ('_runnable' == key) return; 832 if ('_runnable' == key) return;
849 if ('test' == key) return; 833 if ('test' == key) return;
850 return val; 834 return val;
851 }, 2); 835 }, 2);
852 }; 836 };
853 837
854 }); // module: context.js 838 }); // module: context.js
855 839
856 require.register("hook.js", function(module, exports, require){ 840 require.register("hook.js", function(module, exports, require){
841
857 /** 842 /**
858 * Module dependencies. 843 * Module dependencies.
859 */ 844 */
860 845
861 var Runnable = require('./runnable'); 846 var Runnable = require('./runnable');
862 847
863 /** 848 /**
864 * Expose `Hook`. 849 * Expose `Hook`.
865 */ 850 */
866 851
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
903 this._error = null; 888 this._error = null;
904 return err; 889 return err;
905 } 890 }
906 891
907 this._error = err; 892 this._error = err;
908 }; 893 };
909 894
910 }); // module: hook.js 895 }); // module: hook.js
911 896
912 require.register("interfaces/bdd.js", function(module, exports, require){ 897 require.register("interfaces/bdd.js", function(module, exports, require){
898
913 /** 899 /**
914 * Module dependencies. 900 * Module dependencies.
915 */ 901 */
916 902
917 var Suite = require('../suite') 903 var Suite = require('../suite')
918 , Test = require('../test') 904 , Test = require('../test')
919 , utils = require('../utils') 905 , utils = require('../utils');
920 , escapeRe = require('browser/escape-string-regexp');
921 906
922 /** 907 /**
923 * BDD-style interface: 908 * BDD-style interface:
924 * 909 *
925 * describe('Array', function(){ 910 * describe('Array', function(){
926 * describe('#indexOf()', function(){ 911 * describe('#indexOf()', function(){
927 * it('should return -1 when not present', function(){ 912 * it('should return -1 when not present', function(){
928 * 913 *
929 * }); 914 * });
930 * 915 *
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
1013 }; 998 };
1014 999
1015 /** 1000 /**
1016 * Describe a specification or test-case 1001 * Describe a specification or test-case
1017 * with the given `title` and callback `fn` 1002 * with the given `title` and callback `fn`
1018 * acting as a thunk. 1003 * acting as a thunk.
1019 */ 1004 */
1020 1005
1021 context.it = context.specify = function(title, fn){ 1006 context.it = context.specify = function(title, fn){
1022 var suite = suites[0]; 1007 var suite = suites[0];
1023 if (suite.pending) fn = null; 1008 if (suite.pending) var fn = null;
1024 var test = new Test(title, fn); 1009 var test = new Test(title, fn);
1025 test.file = file; 1010 test.file = file;
1026 suite.addTest(test); 1011 suite.addTest(test);
1027 return test; 1012 return test;
1028 }; 1013 };
1029 1014
1030 /** 1015 /**
1031 * Exclusive test-case. 1016 * Exclusive test-case.
1032 */ 1017 */
1033 1018
1034 context.it.only = function(title, fn){ 1019 context.it.only = function(title, fn){
1035 var test = context.it(title, fn); 1020 var test = context.it(title, fn);
1036 var reString = '^' + escapeRe(test.fullTitle()) + '$'; 1021 var reString = '^' + utils.escapeRegexp(test.fullTitle()) + '$';
1037 mocha.grep(new RegExp(reString)); 1022 mocha.grep(new RegExp(reString));
1038 return test; 1023 return test;
1039 }; 1024 };
1040 1025
1041 /** 1026 /**
1042 * Pending test case. 1027 * Pending test case.
1043 */ 1028 */
1044 1029
1045 context.xit = 1030 context.xit =
1046 context.xspecify = 1031 context.xspecify =
1047 context.it.skip = function(title){ 1032 context.it.skip = function(title){
1048 context.it(title); 1033 context.it(title);
1049 }; 1034 };
1050 }); 1035 });
1051 }; 1036 };
1052 1037
1053 }); // module: interfaces/bdd.js 1038 }); // module: interfaces/bdd.js
1054 1039
1055 require.register("interfaces/exports.js", function(module, exports, require){ 1040 require.register("interfaces/exports.js", function(module, exports, require){
1041
1056 /** 1042 /**
1057 * Module dependencies. 1043 * Module dependencies.
1058 */ 1044 */
1059 1045
1060 var Suite = require('../suite') 1046 var Suite = require('../suite')
1061 , Test = require('../test'); 1047 , Test = require('../test');
1062 1048
1063 /** 1049 /**
1064 * TDD-style interface: 1050 * TDD-style interface:
1065 * 1051 *
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 break; 1085 break;
1100 case 'afterEach': 1086 case 'afterEach':
1101 suites[0].afterEach(fn); 1087 suites[0].afterEach(fn);
1102 break; 1088 break;
1103 default: 1089 default:
1104 var test = new Test(key, fn); 1090 var test = new Test(key, fn);
1105 test.file = file; 1091 test.file = file;
1106 suites[0].addTest(test); 1092 suites[0].addTest(test);
1107 } 1093 }
1108 } else { 1094 } else {
1109 suite = Suite.create(suites[0], key); 1095 var suite = Suite.create(suites[0], key);
1110 suites.unshift(suite); 1096 suites.unshift(suite);
1111 visit(obj[key]); 1097 visit(obj[key]);
1112 suites.shift(); 1098 suites.shift();
1113 } 1099 }
1114 } 1100 }
1115 } 1101 }
1116 }; 1102 };
1117 1103
1118 }); // module: interfaces/exports.js 1104 }); // module: interfaces/exports.js
1119 1105
1120 require.register("interfaces/index.js", function(module, exports, require){ 1106 require.register("interfaces/index.js", function(module, exports, require){
1107
1121 exports.bdd = require('./bdd'); 1108 exports.bdd = require('./bdd');
1122 exports.tdd = require('./tdd'); 1109 exports.tdd = require('./tdd');
1123 exports.qunit = require('./qunit'); 1110 exports.qunit = require('./qunit');
1124 exports.exports = require('./exports'); 1111 exports.exports = require('./exports');
1125 1112
1126 }); // module: interfaces/index.js 1113 }); // module: interfaces/index.js
1127 1114
1128 require.register("interfaces/qunit.js", function(module, exports, require){ 1115 require.register("interfaces/qunit.js", function(module, exports, require){
1116
1129 /** 1117 /**
1130 * Module dependencies. 1118 * Module dependencies.
1131 */ 1119 */
1132 1120
1133 var Suite = require('../suite') 1121 var Suite = require('../suite')
1134 , Test = require('../test') 1122 , Test = require('../test')
1135 , escapeRe = require('browser/escape-string-regexp')
1136 , utils = require('../utils'); 1123 , utils = require('../utils');
1137 1124
1138 /** 1125 /**
1139 * QUnit-style interface: 1126 * QUnit-style interface:
1140 * 1127 *
1141 * suite('Array'); 1128 * suite('Array');
1142 * 1129 *
1143 * test('#length', function(){ 1130 * test('#length', function(){
1144 * var arr = [1,2,3]; 1131 * var arr = [1,2,3];
1145 * ok(arr.length == 3); 1132 * ok(arr.length == 3);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1230 suites[0].addTest(test); 1217 suites[0].addTest(test);
1231 return test; 1218 return test;
1232 }; 1219 };
1233 1220
1234 /** 1221 /**
1235 * Exclusive test-case. 1222 * Exclusive test-case.
1236 */ 1223 */
1237 1224
1238 context.test.only = function(title, fn){ 1225 context.test.only = function(title, fn){
1239 var test = context.test(title, fn); 1226 var test = context.test(title, fn);
1240 var reString = '^' + escapeRe(test.fullTitle()) + '$'; 1227 var reString = '^' + utils.escapeRegexp(test.fullTitle()) + '$';
1241 mocha.grep(new RegExp(reString)); 1228 mocha.grep(new RegExp(reString));
1242 }; 1229 };
1243 1230
1244 /** 1231 /**
1245 * Pending test case. 1232 * Pending test case.
1246 */ 1233 */
1247 1234
1248 context.test.skip = function(title){ 1235 context.test.skip = function(title){
1249 context.test(title); 1236 context.test(title);
1250 }; 1237 };
1251 }); 1238 });
1252 }; 1239 };
1253 1240
1254 }); // module: interfaces/qunit.js 1241 }); // module: interfaces/qunit.js
1255 1242
1256 require.register("interfaces/tdd.js", function(module, exports, require){ 1243 require.register("interfaces/tdd.js", function(module, exports, require){
1244
1257 /** 1245 /**
1258 * Module dependencies. 1246 * Module dependencies.
1259 */ 1247 */
1260 1248
1261 var Suite = require('../suite') 1249 var Suite = require('../suite')
1262 , Test = require('../test') 1250 , Test = require('../test')
1263 , escapeRe = require('browser/escape-string-regexp') 1251 , utils = require('../utils');;
1264 , utils = require('../utils');
1265 1252
1266 /** 1253 /**
1267 * TDD-style interface: 1254 * TDD-style interface:
1268 * 1255 *
1269 * suite('Array', function(){ 1256 * suite('Array', function(){
1270 * suite('#indexOf()', function(){ 1257 * suite('#indexOf()', function(){
1271 * suiteSetup(function(){ 1258 * suiteSetup(function(){
1272 * 1259 *
1273 * }); 1260 * });
1274 * 1261 *
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 }; 1348 };
1362 1349
1363 /** 1350 /**
1364 * Describe a specification or test-case 1351 * Describe a specification or test-case
1365 * with the given `title` and callback `fn` 1352 * with the given `title` and callback `fn`
1366 * acting as a thunk. 1353 * acting as a thunk.
1367 */ 1354 */
1368 1355
1369 context.test = function(title, fn){ 1356 context.test = function(title, fn){
1370 var suite = suites[0]; 1357 var suite = suites[0];
1371 if (suite.pending) fn = null; 1358 if (suite.pending) var fn = null;
1372 var test = new Test(title, fn); 1359 var test = new Test(title, fn);
1373 test.file = file; 1360 test.file = file;
1374 suite.addTest(test); 1361 suite.addTest(test);
1375 return test; 1362 return test;
1376 }; 1363 };
1377 1364
1378 /** 1365 /**
1379 * Exclusive test-case. 1366 * Exclusive test-case.
1380 */ 1367 */
1381 1368
1382 context.test.only = function(title, fn){ 1369 context.test.only = function(title, fn){
1383 var test = context.test(title, fn); 1370 var test = context.test(title, fn);
1384 var reString = '^' + escapeRe(test.fullTitle()) + '$'; 1371 var reString = '^' + utils.escapeRegexp(test.fullTitle()) + '$';
1385 mocha.grep(new RegExp(reString)); 1372 mocha.grep(new RegExp(reString));
1386 }; 1373 };
1387 1374
1388 /** 1375 /**
1389 * Pending test case. 1376 * Pending test case.
1390 */ 1377 */
1391 1378
1392 context.test.skip = function(title){ 1379 context.test.skip = function(title){
1393 context.test(title); 1380 context.test(title);
1394 }; 1381 };
1395 }); 1382 });
1396 }; 1383 };
1397 1384
1398 }); // module: interfaces/tdd.js 1385 }); // module: interfaces/tdd.js
1399 1386
1400 require.register("mocha.js", function(module, exports, require){ 1387 require.register("mocha.js", function(module, exports, require){
1401 /*! 1388 /*!
1402 * mocha 1389 * mocha
1403 * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca> 1390 * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca>
1404 * MIT Licensed 1391 * MIT Licensed
1405 */ 1392 */
1406 1393
1407 /** 1394 /**
1408 * Module dependencies. 1395 * Module dependencies.
1409 */ 1396 */
1410 1397
1411 var path = require('browser/path') 1398 var path = require('browser/path')
1412 , escapeRe = require('browser/escape-string-regexp')
1413 , utils = require('./utils'); 1399 , utils = require('./utils');
1414 1400
1415 /** 1401 /**
1416 * Expose `Mocha`. 1402 * Expose `Mocha`.
1417 */ 1403 */
1418 1404
1419 exports = module.exports = Mocha; 1405 exports = module.exports = Mocha;
1420 1406
1421 /** 1407 /**
1422 * To require local UIs and reporters when running in node. 1408 * To require local UIs and reporters when running in node.
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1614 /** 1600 /**
1615 * Add regexp to grep, if `re` is a string it is escaped. 1601 * Add regexp to grep, if `re` is a string it is escaped.
1616 * 1602 *
1617 * @param {RegExp|String} re 1603 * @param {RegExp|String} re
1618 * @return {Mocha} 1604 * @return {Mocha}
1619 * @api public 1605 * @api public
1620 */ 1606 */
1621 1607
1622 Mocha.prototype.grep = function(re){ 1608 Mocha.prototype.grep = function(re){
1623 this.options.grep = 'string' == typeof re 1609 this.options.grep = 'string' == typeof re
1624 ? new RegExp(escapeRe(re)) 1610 ? new RegExp(utils.escapeRegexp(re))
1625 : re; 1611 : re;
1626 return this; 1612 return this;
1627 }; 1613 };
1628 1614
1629 /** 1615 /**
1630 * Invert `.grep()` matches. 1616 * Invert `.grep()` matches.
1631 * 1617 *
1632 * @return {Mocha} 1618 * @return {Mocha}
1633 * @api public 1619 * @api public
1634 */ 1620 */
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1765 * @return {Mocha} 1751 * @return {Mocha}
1766 * @api public 1752 * @api public
1767 */ 1753 */
1768 1754
1769 Mocha.prototype.asyncOnly = function(){ 1755 Mocha.prototype.asyncOnly = function(){
1770 this.options.asyncOnly = true; 1756 this.options.asyncOnly = true;
1771 return this; 1757 return this;
1772 }; 1758 };
1773 1759
1774 /** 1760 /**
1775 * Disable syntax highlighting (in browser).
1776 * @returns {Mocha}
1777 * @api public
1778 */
1779 Mocha.prototype.noHighlighting = function() {
1780 this.options.noHighlighting = true;
1781 return this;
1782 };
1783
1784 /**
1785 * Run tests and invoke `fn()` when complete. 1761 * Run tests and invoke `fn()` when complete.
1786 * 1762 *
1787 * @param {Function} fn 1763 * @param {Function} fn
1788 * @return {Runner} 1764 * @return {Runner}
1789 * @api public 1765 * @api public
1790 */ 1766 */
1791 1767
1792 Mocha.prototype.run = function(fn){ 1768 Mocha.prototype.run = function(fn){
1793 if (this.files.length) this.loadFiles(); 1769 if (this.files.length) this.loadFiles();
1794 var suite = this.suite; 1770 var suite = this.suite;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1828 * 1804 *
1829 * @param {String|Number} val 1805 * @param {String|Number} val
1830 * @param {Object} options 1806 * @param {Object} options
1831 * @return {String|Number} 1807 * @return {String|Number}
1832 * @api public 1808 * @api public
1833 */ 1809 */
1834 1810
1835 module.exports = function(val, options){ 1811 module.exports = function(val, options){
1836 options = options || {}; 1812 options = options || {};
1837 if ('string' == typeof val) return parse(val); 1813 if ('string' == typeof val) return parse(val);
1838 return options['long'] ? longFormat(val) : shortFormat(val); 1814 return options.long ? longFormat(val) : shortFormat(val);
1839 }; 1815 };
1840 1816
1841 /** 1817 /**
1842 * Parse the given `str` and return milliseconds. 1818 * Parse the given `str` and return milliseconds.
1843 * 1819 *
1844 * @param {String} str 1820 * @param {String} str
1845 * @return {Number} 1821 * @return {Number}
1846 * @api private 1822 * @api private
1847 */ 1823 */
1848 1824
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1915 1891
1916 function plural(ms, n, name) { 1892 function plural(ms, n, name) {
1917 if (ms < n) return; 1893 if (ms < n) return;
1918 if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; 1894 if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
1919 return Math.ceil(ms / n) + ' ' + name + 's'; 1895 return Math.ceil(ms / n) + ' ' + name + 's';
1920 } 1896 }
1921 1897
1922 }); // module: ms.js 1898 }); // module: ms.js
1923 1899
1924 require.register("reporters/base.js", function(module, exports, require){ 1900 require.register("reporters/base.js", function(module, exports, require){
1901
1925 /** 1902 /**
1926 * Module dependencies. 1903 * Module dependencies.
1927 */ 1904 */
1928 1905
1929 var tty = require('browser/tty') 1906 var tty = require('browser/tty')
1930 , diff = require('browser/diff') 1907 , diff = require('browser/diff')
1931 , ms = require('../ms') 1908 , ms = require('../ms')
1932 , utils = require('../utils'); 1909 , utils = require('../utils');
1933 1910
1934 /** 1911 /**
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
2101 } 2078 }
2102 2079
2103 // explicitly show diff 2080 // explicitly show diff
2104 if (err.showDiff && sameType(actual, expected)) { 2081 if (err.showDiff && sameType(actual, expected)) {
2105 escape = false; 2082 escape = false;
2106 err.actual = actual = utils.stringify(actual); 2083 err.actual = actual = utils.stringify(actual);
2107 err.expected = expected = utils.stringify(expected); 2084 err.expected = expected = utils.stringify(expected);
2108 } 2085 }
2109 2086
2110 // actual / expected diff 2087 // actual / expected diff
2111 if (err.showDiff && 'string' == typeof actual && 'string' == typeof expected ) { 2088 if ('string' == typeof actual && 'string' == typeof expected) {
2112 fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n '); 2089 fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n ');
2113 var match = message.match(/^([^:]+): expected/); 2090 var match = message.match(/^([^:]+): expected/);
2114 msg = '\n ' + color('error message', match ? match[1] : msg); 2091 msg = '\n ' + color('error message', match ? match[1] : msg);
2115 2092
2116 if (exports.inlineDiffs) { 2093 if (exports.inlineDiffs) {
2117 msg += inlineDiff(err, escape); 2094 msg += inlineDiff(err, escape);
2118 } else { 2095 } else {
2119 msg += unifiedDiff(err, escape); 2096 msg += unifiedDiff(err, escape);
2120 } 2097 }
2121 } 2098 }
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
2377 2354
2378 function sameType(a, b) { 2355 function sameType(a, b) {
2379 a = Object.prototype.toString.call(a); 2356 a = Object.prototype.toString.call(a);
2380 b = Object.prototype.toString.call(b); 2357 b = Object.prototype.toString.call(b);
2381 return a == b; 2358 return a == b;
2382 } 2359 }
2383 2360
2384 }); // module: reporters/base.js 2361 }); // module: reporters/base.js
2385 2362
2386 require.register("reporters/doc.js", function(module, exports, require){ 2363 require.register("reporters/doc.js", function(module, exports, require){
2364
2387 /** 2365 /**
2388 * Module dependencies. 2366 * Module dependencies.
2389 */ 2367 */
2390 2368
2391 var Base = require('./base') 2369 var Base = require('./base')
2392 , utils = require('../utils'); 2370 , utils = require('../utils');
2393 2371
2394 /** 2372 /**
2395 * Expose `Doc`. 2373 * Expose `Doc`.
2396 */ 2374 */
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2443 console.log('%s <dt class="error">%s</dt>', indent(), utils.escape(test.tit le)); 2421 console.log('%s <dt class="error">%s</dt>', indent(), utils.escape(test.tit le));
2444 var code = utils.escape(utils.clean(test.fn.toString())); 2422 var code = utils.escape(utils.clean(test.fn.toString()));
2445 console.log('%s <dd class="error"><pre><code>%s</code></pre></dd>', indent( ), code); 2423 console.log('%s <dd class="error"><pre><code>%s</code></pre></dd>', indent( ), code);
2446 console.log('%s <dd class="error">%s</dd>', indent(), utils.escape(err)); 2424 console.log('%s <dd class="error">%s</dd>', indent(), utils.escape(err));
2447 }); 2425 });
2448 } 2426 }
2449 2427
2450 }); // module: reporters/doc.js 2428 }); // module: reporters/doc.js
2451 2429
2452 require.register("reporters/dot.js", function(module, exports, require){ 2430 require.register("reporters/dot.js", function(module, exports, require){
2431
2453 /** 2432 /**
2454 * Module dependencies. 2433 * Module dependencies.
2455 */ 2434 */
2456 2435
2457 var Base = require('./base') 2436 var Base = require('./base')
2458 , color = Base.color; 2437 , color = Base.color;
2459 2438
2460 /** 2439 /**
2461 * Expose `Dot`. 2440 * Expose `Dot`.
2462 */ 2441 */
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2513 2492
2514 function F(){}; 2493 function F(){};
2515 F.prototype = Base.prototype; 2494 F.prototype = Base.prototype;
2516 Dot.prototype = new F; 2495 Dot.prototype = new F;
2517 Dot.prototype.constructor = Dot; 2496 Dot.prototype.constructor = Dot;
2518 2497
2519 2498
2520 }); // module: reporters/dot.js 2499 }); // module: reporters/dot.js
2521 2500
2522 require.register("reporters/html-cov.js", function(module, exports, require){ 2501 require.register("reporters/html-cov.js", function(module, exports, require){
2502
2523 /** 2503 /**
2524 * Module dependencies. 2504 * Module dependencies.
2525 */ 2505 */
2526 2506
2527 var JSONCov = require('./json-cov') 2507 var JSONCov = require('./json-cov')
2528 , fs = require('browser/fs'); 2508 , fs = require('browser/fs');
2529 2509
2530 /** 2510 /**
2531 * Expose `HTMLCov`. 2511 * Expose `HTMLCov`.
2532 */ 2512 */
(...skipping 30 matching lines...) Expand all
2563 * @return {String} 2543 * @return {String}
2564 * @api private 2544 * @api private
2565 */ 2545 */
2566 2546
2567 function coverageClass(n) { 2547 function coverageClass(n) {
2568 if (n >= 75) return 'high'; 2548 if (n >= 75) return 'high';
2569 if (n >= 50) return 'medium'; 2549 if (n >= 50) return 'medium';
2570 if (n >= 25) return 'low'; 2550 if (n >= 25) return 'low';
2571 return 'terrible'; 2551 return 'terrible';
2572 } 2552 }
2573
2574 }); // module: reporters/html-cov.js 2553 }); // module: reporters/html-cov.js
2575 2554
2576 require.register("reporters/html.js", function(module, exports, require){ 2555 require.register("reporters/html.js", function(module, exports, require){
2556
2577 /** 2557 /**
2578 * Module dependencies. 2558 * Module dependencies.
2579 */ 2559 */
2580 2560
2581 var Base = require('./base') 2561 var Base = require('./base')
2582 , utils = require('../utils') 2562 , utils = require('../utils')
2583 , Progress = require('../browser/progress') 2563 , Progress = require('../browser/progress')
2584 , escape = utils.escape; 2564 , escape = utils.escape;
2585 2565
2586 /** 2566 /**
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
2746 el.appendChild(pre); 2726 el.appendChild(pre);
2747 pre.style.display = 'none'; 2727 pre.style.display = 'none';
2748 } 2728 }
2749 2729
2750 // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. 2730 // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack.
2751 if (stack[0]) stack[0].appendChild(el); 2731 if (stack[0]) stack[0].appendChild(el);
2752 }); 2732 });
2753 } 2733 }
2754 2734
2755 /** 2735 /**
2756 * Makes a URL, preserving querystring ("search") parameters.
2757 * @param {string} s
2758 * @returns {string} your new URL
2759 */
2760 var makeUrl = function makeUrl(s) {
2761 var search = window.location.search;
2762 return (search ? search + '&' : '?' ) + 'grep=' + encodeURIComponent(s);
2763 };
2764
2765 /**
2766 * Provide suite URL 2736 * Provide suite URL
2767 * 2737 *
2768 * @param {Object} [suite] 2738 * @param {Object} [suite]
2769 */ 2739 */
2740
2770 HTML.prototype.suiteURL = function(suite){ 2741 HTML.prototype.suiteURL = function(suite){
2771 return makeUrl(suite.fullTitle()); 2742 return '?grep=' + encodeURIComponent(suite.fullTitle());
2772 }; 2743 };
2773 2744
2774 /** 2745 /**
2775 * Provide test URL 2746 * Provide test URL
2776 * 2747 *
2777 * @param {Object} [test] 2748 * @param {Object} [test]
2778 */ 2749 */
2779 2750
2780 HTML.prototype.testURL = function(test){ 2751 HTML.prototype.testURL = function(test){
2781 return makeUrl(test.fullTitle()); 2752 return '?grep=' + encodeURIComponent(test.fullTitle());
2782 }; 2753 };
2783 2754
2784 /** 2755 /**
2785 * Display error `msg`. 2756 * Display error `msg`.
2786 */ 2757 */
2787 2758
2788 function error(msg) { 2759 function error(msg) {
2789 document.body.appendChild(fragment('<div id="mocha-error">%s</div>', msg)); 2760 document.body.appendChild(fragment('<div id="mocha-error">%s</div>', msg));
2790 } 2761 }
2791 2762
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2852 if (el.addEventListener) { 2823 if (el.addEventListener) {
2853 el.addEventListener(event, fn, false); 2824 el.addEventListener(event, fn, false);
2854 } else { 2825 } else {
2855 el.attachEvent('on' + event, fn); 2826 el.attachEvent('on' + event, fn);
2856 } 2827 }
2857 } 2828 }
2858 2829
2859 }); // module: reporters/html.js 2830 }); // module: reporters/html.js
2860 2831
2861 require.register("reporters/index.js", function(module, exports, require){ 2832 require.register("reporters/index.js", function(module, exports, require){
2833
2862 exports.Base = require('./base'); 2834 exports.Base = require('./base');
2863 exports.Dot = require('./dot'); 2835 exports.Dot = require('./dot');
2864 exports.Doc = require('./doc'); 2836 exports.Doc = require('./doc');
2865 exports.TAP = require('./tap'); 2837 exports.TAP = require('./tap');
2866 exports.JSON = require('./json'); 2838 exports.JSON = require('./json');
2867 exports.HTML = require('./html'); 2839 exports.HTML = require('./html');
2868 exports.List = require('./list'); 2840 exports.List = require('./list');
2869 exports.Min = require('./min'); 2841 exports.Min = require('./min');
2870 exports.Spec = require('./spec'); 2842 exports.Spec = require('./spec');
2871 exports.Nyan = require('./nyan'); 2843 exports.Nyan = require('./nyan');
2872 exports.XUnit = require('./xunit'); 2844 exports.XUnit = require('./xunit');
2873 exports.Markdown = require('./markdown'); 2845 exports.Markdown = require('./markdown');
2874 exports.Progress = require('./progress'); 2846 exports.Progress = require('./progress');
2875 exports.Landing = require('./landing'); 2847 exports.Landing = require('./landing');
2876 exports.JSONCov = require('./json-cov'); 2848 exports.JSONCov = require('./json-cov');
2877 exports.HTMLCov = require('./html-cov'); 2849 exports.HTMLCov = require('./html-cov');
2878 exports.JSONStream = require('./json-stream'); 2850 exports.JSONStream = require('./json-stream');
2879 2851
2880 }); // module: reporters/index.js 2852 }); // module: reporters/index.js
2881 2853
2882 require.register("reporters/json-cov.js", function(module, exports, require){ 2854 require.register("reporters/json-cov.js", function(module, exports, require){
2855
2883 /** 2856 /**
2884 * Module dependencies. 2857 * Module dependencies.
2885 */ 2858 */
2886 2859
2887 var Base = require('./base'); 2860 var Base = require('./base');
2888 2861
2889 /** 2862 /**
2890 * Expose `JSONCov`. 2863 * Expose `JSONCov`.
2891 */ 2864 */
2892 2865
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2963 2936
2964 ret.files.sort(function(a, b) { 2937 ret.files.sort(function(a, b) {
2965 return a.filename.localeCompare(b.filename); 2938 return a.filename.localeCompare(b.filename);
2966 }); 2939 });
2967 2940
2968 if (ret.sloc > 0) { 2941 if (ret.sloc > 0) {
2969 ret.coverage = (ret.hits / ret.sloc) * 100; 2942 ret.coverage = (ret.hits / ret.sloc) * 100;
2970 } 2943 }
2971 2944
2972 return ret; 2945 return ret;
2973 } 2946 };
2974 2947
2975 /** 2948 /**
2976 * Map jscoverage data for a single source file 2949 * Map jscoverage data for a single source file
2977 * to a JSON structure suitable for reporting. 2950 * to a JSON structure suitable for reporting.
2978 * 2951 *
2979 * @param {String} filename name of the source file 2952 * @param {String} filename name of the source file
2980 * @param {Object} data jscoverage coverage data 2953 * @param {Object} data jscoverage coverage data
2981 * @return {Object} 2954 * @return {Object}
2982 * @api private 2955 * @api private
2983 */ 2956 */
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
3029 return { 3002 return {
3030 title: test.title 3003 title: test.title
3031 , fullTitle: test.fullTitle() 3004 , fullTitle: test.fullTitle()
3032 , duration: test.duration 3005 , duration: test.duration
3033 } 3006 }
3034 } 3007 }
3035 3008
3036 }); // module: reporters/json-cov.js 3009 }); // module: reporters/json-cov.js
3037 3010
3038 require.register("reporters/json-stream.js", function(module, exports, require){ 3011 require.register("reporters/json-stream.js", function(module, exports, require){
3012
3039 /** 3013 /**
3040 * Module dependencies. 3014 * Module dependencies.
3041 */ 3015 */
3042 3016
3043 var Base = require('./base') 3017 var Base = require('./base')
3044 , color = Base.color; 3018 , color = Base.color;
3045 3019
3046 /** 3020 /**
3047 * Expose `List`. 3021 * Expose `List`.
3048 */ 3022 */
(...skipping 16 matching lines...) Expand all
3065 3039
3066 runner.on('start', function(){ 3040 runner.on('start', function(){
3067 console.log(JSON.stringify(['start', { total: total }])); 3041 console.log(JSON.stringify(['start', { total: total }]));
3068 }); 3042 });
3069 3043
3070 runner.on('pass', function(test){ 3044 runner.on('pass', function(test){
3071 console.log(JSON.stringify(['pass', clean(test)])); 3045 console.log(JSON.stringify(['pass', clean(test)]));
3072 }); 3046 });
3073 3047
3074 runner.on('fail', function(test, err){ 3048 runner.on('fail', function(test, err){
3075 test = clean(test); 3049 console.log(JSON.stringify(['fail', clean(test)]));
3076 test.err = err.message;
3077 console.log(JSON.stringify(['fail', test]));
3078 }); 3050 });
3079 3051
3080 runner.on('end', function(){ 3052 runner.on('end', function(){
3081 process.stdout.write(JSON.stringify(['end', self.stats])); 3053 process.stdout.write(JSON.stringify(['end', self.stats]));
3082 }); 3054 });
3083 } 3055 }
3084 3056
3085 /** 3057 /**
3086 * Return a plain-object representation of `test` 3058 * Return a plain-object representation of `test`
3087 * free of cyclic properties etc. 3059 * free of cyclic properties etc.
3088 * 3060 *
3089 * @param {Object} test 3061 * @param {Object} test
3090 * @return {Object} 3062 * @return {Object}
3091 * @api private 3063 * @api private
3092 */ 3064 */
3093 3065
3094 function clean(test) { 3066 function clean(test) {
3095 return { 3067 return {
3096 title: test.title 3068 title: test.title
3097 , fullTitle: test.fullTitle() 3069 , fullTitle: test.fullTitle()
3098 , duration: test.duration 3070 , duration: test.duration
3099 } 3071 }
3100 } 3072 }
3101
3102 }); // module: reporters/json-stream.js 3073 }); // module: reporters/json-stream.js
3103 3074
3104 require.register("reporters/json.js", function(module, exports, require){ 3075 require.register("reporters/json.js", function(module, exports, require){
3076
3105 /** 3077 /**
3106 * Module dependencies. 3078 * Module dependencies.
3107 */ 3079 */
3108 3080
3109 var Base = require('./base') 3081 var Base = require('./base')
3110 , cursor = Base.cursor 3082 , cursor = Base.cursor
3111 , color = Base.color; 3083 , color = Base.color;
3112 3084
3113 /** 3085 /**
3114 * Expose `JSON`. 3086 * Expose `JSON`.
3115 */ 3087 */
3116 3088
3117 exports = module.exports = JSONReporter; 3089 exports = module.exports = JSONReporter;
3118 3090
3119 /** 3091 /**
3120 * Initialize a new `JSON` reporter. 3092 * Initialize a new `JSON` reporter.
3121 * 3093 *
3122 * @param {Runner} runner 3094 * @param {Runner} runner
3123 * @api public 3095 * @api public
3124 */ 3096 */
3125 3097
3126 function JSONReporter(runner) { 3098 function JSONReporter(runner) {
3127 var self = this; 3099 var self = this;
3128 Base.call(this, runner); 3100 Base.call(this, runner);
3129 3101
3130 var tests = [] 3102 var tests = []
3131 , pending = []
3132 , failures = [] 3103 , failures = []
3133 , passes = []; 3104 , passes = [];
3134 3105
3135 runner.on('test end', function(test){ 3106 runner.on('test end', function(test){
3136 tests.push(test); 3107 tests.push(test);
3137 }); 3108 });
3138 3109
3139 runner.on('pass', function(test){ 3110 runner.on('pass', function(test){
3140 passes.push(test); 3111 passes.push(test);
3141 }); 3112 });
3142 3113
3143 runner.on('fail', function(test){ 3114 runner.on('fail', function(test, err){
3144 failures.push(test); 3115 failures.push(test);
3145 }); 3116 if (err === Object(err)) {
3146 3117 test.errMsg = err.message;
3147 runner.on('pending', function(test){ 3118 test.errStack = err.stack;
3148 pending.push(test); 3119 }
3149 }); 3120 });
3150 3121
3151 runner.on('end', function(){ 3122 runner.on('end', function(){
3152 var obj = { 3123 var obj = {
3153 stats: self.stats, 3124 stats: self.stats,
3154 tests: tests.map(clean), 3125 tests: tests.map(clean),
3155 pending: pending.map(clean),
3156 failures: failures.map(clean), 3126 failures: failures.map(clean),
3157 passes: passes.map(clean) 3127 passes: passes.map(clean)
3158 }; 3128 };
3159
3160 runner.testResults = obj; 3129 runner.testResults = obj;
3161 3130
3162 process.stdout.write(JSON.stringify(obj, null, 2)); 3131 process.stdout.write(JSON.stringify(obj, null, 2));
3163 }); 3132 });
3164 } 3133 }
3165 3134
3166 /** 3135 /**
3167 * Return a plain-object representation of `test` 3136 * Return a plain-object representation of `test`
3168 * free of cyclic properties etc. 3137 * free of cyclic properties etc.
3169 * 3138 *
3170 * @param {Object} test 3139 * @param {Object} test
3171 * @return {Object} 3140 * @return {Object}
3172 * @api private 3141 * @api private
3173 */ 3142 */
3174 3143
3175 function clean(test) { 3144 function clean(test) {
3176 return { 3145 return {
3177 title: test.title, 3146 title: test.title,
3178 fullTitle: test.fullTitle(), 3147 fullTitle: test.fullTitle(),
3179 duration: test.duration, 3148 duration: test.duration,
3180 err: errorJSON(test.err || {}) 3149 err: test.err,
3150 errStack: test.err.stack,
3151 errMessage: test.err.message
3181 } 3152 }
3182 } 3153 }
3183 3154
3184 /**
3185 * Transform `error` into a JSON object.
3186 * @param {Error} err
3187 * @return {Object}
3188 */
3189
3190 function errorJSON(err) {
3191 var res = {};
3192 Object.getOwnPropertyNames(err).forEach(function(key) {
3193 res[key] = err[key];
3194 }, err);
3195 return res;
3196 }
3197
3198 }); // module: reporters/json.js 3155 }); // module: reporters/json.js
3199 3156
3200 require.register("reporters/landing.js", function(module, exports, require){ 3157 require.register("reporters/landing.js", function(module, exports, require){
3158
3201 /** 3159 /**
3202 * Module dependencies. 3160 * Module dependencies.
3203 */ 3161 */
3204 3162
3205 var Base = require('./base') 3163 var Base = require('./base')
3206 , cursor = Base.cursor 3164 , cursor = Base.cursor
3207 , color = Base.color; 3165 , color = Base.color;
3208 3166
3209 /** 3167 /**
3210 * Expose `Landing`. 3168 * Expose `Landing`.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3248 , plane = color('plane', '✈') 3206 , plane = color('plane', '✈')
3249 , crashed = -1 3207 , crashed = -1
3250 , n = 0; 3208 , n = 0;
3251 3209
3252 function runway() { 3210 function runway() {
3253 var buf = Array(width).join('-'); 3211 var buf = Array(width).join('-');
3254 return ' ' + color('runway', buf); 3212 return ' ' + color('runway', buf);
3255 } 3213 }
3256 3214
3257 runner.on('start', function(){ 3215 runner.on('start', function(){
3258 stream.write('\n\n\n '); 3216 stream.write('\n ');
3259 cursor.hide(); 3217 cursor.hide();
3260 }); 3218 });
3261 3219
3262 runner.on('test end', function(test){ 3220 runner.on('test end', function(test){
3263 // check if the plane crashed 3221 // check if the plane crashed
3264 var col = -1 == crashed 3222 var col = -1 == crashed
3265 ? width * ++n / total | 0 3223 ? width * ++n / total | 0
3266 : crashed; 3224 : crashed;
3267 3225
3268 // show the crash 3226 // show the crash
3269 if ('failed' == test.state) { 3227 if ('failed' == test.state) {
3270 plane = color('plane crash', '✈'); 3228 plane = color('plane crash', '✈');
3271 crashed = col; 3229 crashed = col;
3272 } 3230 }
3273 3231
3274 // render landing strip 3232 // render landing strip
3275 stream.write('\u001b['+(width+1)+'D\u001b[2A'); 3233 stream.write('\u001b[4F\n\n');
3276 stream.write(runway()); 3234 stream.write(runway());
3277 stream.write('\n '); 3235 stream.write('\n ');
3278 stream.write(color('runway', Array(col).join('â‹…'))); 3236 stream.write(color('runway', Array(col).join('â‹…')));
3279 stream.write(plane) 3237 stream.write(plane)
3280 stream.write(color('runway', Array(width - col).join('â‹…') + '\n')); 3238 stream.write(color('runway', Array(width - col).join('â‹…') + '\n'));
3281 stream.write(runway()); 3239 stream.write(runway());
3282 stream.write('\u001b[0m'); 3240 stream.write('\u001b[0m');
3283 }); 3241 });
3284 3242
3285 runner.on('end', function(){ 3243 runner.on('end', function(){
3286 cursor.show(); 3244 cursor.show();
3287 console.log(); 3245 console.log();
3288 self.epilogue(); 3246 self.epilogue();
3289 }); 3247 });
3290 } 3248 }
3291 3249
3292 /** 3250 /**
3293 * Inherit from `Base.prototype`. 3251 * Inherit from `Base.prototype`.
3294 */ 3252 */
3295 3253
3296 function F(){}; 3254 function F(){};
3297 F.prototype = Base.prototype; 3255 F.prototype = Base.prototype;
3298 Landing.prototype = new F; 3256 Landing.prototype = new F;
3299 Landing.prototype.constructor = Landing; 3257 Landing.prototype.constructor = Landing;
3300 3258
3301
3302 }); // module: reporters/landing.js 3259 }); // module: reporters/landing.js
3303 3260
3304 require.register("reporters/list.js", function(module, exports, require){ 3261 require.register("reporters/list.js", function(module, exports, require){
3262
3305 /** 3263 /**
3306 * Module dependencies. 3264 * Module dependencies.
3307 */ 3265 */
3308 3266
3309 var Base = require('./base') 3267 var Base = require('./base')
3310 , cursor = Base.cursor 3268 , cursor = Base.cursor
3311 , color = Base.color; 3269 , color = Base.color;
3312 3270
3313 /** 3271 /**
3314 * Expose `List`. 3272 * Expose `List`.
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
3457 buf += code + '\n'; 3415 buf += code + '\n';
3458 buf += '```\n\n'; 3416 buf += '```\n\n';
3459 }); 3417 });
3460 3418
3461 runner.on('end', function(){ 3419 runner.on('end', function(){
3462 process.stdout.write('# TOC\n'); 3420 process.stdout.write('# TOC\n');
3463 process.stdout.write(generateTOC(runner.suite)); 3421 process.stdout.write(generateTOC(runner.suite));
3464 process.stdout.write(buf); 3422 process.stdout.write(buf);
3465 }); 3423 });
3466 } 3424 }
3467
3468 }); // module: reporters/markdown.js 3425 }); // module: reporters/markdown.js
3469 3426
3470 require.register("reporters/min.js", function(module, exports, require){ 3427 require.register("reporters/min.js", function(module, exports, require){
3428
3471 /** 3429 /**
3472 * Module dependencies. 3430 * Module dependencies.
3473 */ 3431 */
3474 3432
3475 var Base = require('./base'); 3433 var Base = require('./base');
3476 3434
3477 /** 3435 /**
3478 * Expose `Min`. 3436 * Expose `Min`.
3479 */ 3437 */
3480 3438
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
3693 var stats = this.stats; 3651 var stats = this.stats;
3694 if (stats.failures) { 3652 if (stats.failures) {
3695 return '( x .x)'; 3653 return '( x .x)';
3696 } else if (stats.pending) { 3654 } else if (stats.pending) {
3697 return '( o .o)'; 3655 return '( o .o)';
3698 } else if(stats.passes) { 3656 } else if(stats.passes) {
3699 return '( ^ .^)'; 3657 return '( ^ .^)';
3700 } else { 3658 } else {
3701 return '( - .-)'; 3659 return '( - .-)';
3702 } 3660 }
3703 }; 3661 }
3704 3662
3705 /** 3663 /**
3706 * Move cursor up `n`. 3664 * Move cursor up `n`.
3707 * 3665 *
3708 * @param {Number} n 3666 * @param {Number} n
3709 * @api private 3667 * @api private
3710 */ 3668 */
3711 3669
3712 NyanCat.prototype.cursorUp = function(n) { 3670 NyanCat.prototype.cursorUp = function(n) {
3713 write('\u001b[' + n + 'A'); 3671 write('\u001b[' + n + 'A');
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
3874 3832
3875 function F(){}; 3833 function F(){};
3876 F.prototype = Base.prototype; 3834 F.prototype = Base.prototype;
3877 Progress.prototype = new F; 3835 Progress.prototype = new F;
3878 Progress.prototype.constructor = Progress; 3836 Progress.prototype.constructor = Progress;
3879 3837
3880 3838
3881 }); // module: reporters/progress.js 3839 }); // module: reporters/progress.js
3882 3840
3883 require.register("reporters/spec.js", function(module, exports, require){ 3841 require.register("reporters/spec.js", function(module, exports, require){
3842
3884 /** 3843 /**
3885 * Module dependencies. 3844 * Module dependencies.
3886 */ 3845 */
3887 3846
3888 var Base = require('./base') 3847 var Base = require('./base')
3889 , cursor = Base.cursor 3848 , cursor = Base.cursor
3890 , color = Base.color; 3849 , color = Base.color;
3891 3850
3892 /** 3851 /**
3893 * Expose `Spec`. 3852 * Expose `Spec`.
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
3964 3923
3965 function F(){}; 3924 function F(){};
3966 F.prototype = Base.prototype; 3925 F.prototype = Base.prototype;
3967 Spec.prototype = new F; 3926 Spec.prototype = new F;
3968 Spec.prototype.constructor = Spec; 3927 Spec.prototype.constructor = Spec;
3969 3928
3970 3929
3971 }); // module: reporters/spec.js 3930 }); // module: reporters/spec.js
3972 3931
3973 require.register("reporters/tap.js", function(module, exports, require){ 3932 require.register("reporters/tap.js", function(module, exports, require){
3933
3974 /** 3934 /**
3975 * Module dependencies. 3935 * Module dependencies.
3976 */ 3936 */
3977 3937
3978 var Base = require('./base') 3938 var Base = require('./base')
3979 , cursor = Base.cursor 3939 , cursor = Base.cursor
3980 , color = Base.color; 3940 , color = Base.color;
3981 3941
3982 /** 3942 /**
3983 * Expose `TAP`. 3943 * Expose `TAP`.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
4040 * @api private 4000 * @api private
4041 */ 4001 */
4042 4002
4043 function title(test) { 4003 function title(test) {
4044 return test.fullTitle().replace(/#/g, ''); 4004 return test.fullTitle().replace(/#/g, '');
4045 } 4005 }
4046 4006
4047 }); // module: reporters/tap.js 4007 }); // module: reporters/tap.js
4048 4008
4049 require.register("reporters/xunit.js", function(module, exports, require){ 4009 require.register("reporters/xunit.js", function(module, exports, require){
4010
4050 /** 4011 /**
4051 * Module dependencies. 4012 * Module dependencies.
4052 */ 4013 */
4053 4014
4054 var Base = require('./base') 4015 var Base = require('./base')
4055 , utils = require('../utils') 4016 , utils = require('../utils')
4056 , escape = utils.escape; 4017 , escape = utils.escape;
4057 4018
4058 /** 4019 /**
4059 * Save timer references to avoid Sinon interfering (see GH-237). 4020 * Save timer references to avoid Sinon interfering (see GH-237).
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
4165 * Return cdata escaped CDATA `str`. 4126 * Return cdata escaped CDATA `str`.
4166 */ 4127 */
4167 4128
4168 function cdata(str) { 4129 function cdata(str) {
4169 return '<![CDATA[' + escape(str) + ']]>'; 4130 return '<![CDATA[' + escape(str) + ']]>';
4170 } 4131 }
4171 4132
4172 }); // module: reporters/xunit.js 4133 }); // module: reporters/xunit.js
4173 4134
4174 require.register("runnable.js", function(module, exports, require){ 4135 require.register("runnable.js", function(module, exports, require){
4136
4175 /** 4137 /**
4176 * Module dependencies. 4138 * Module dependencies.
4177 */ 4139 */
4178 4140
4179 var EventEmitter = require('browser/events').EventEmitter 4141 var EventEmitter = require('browser/events').EventEmitter
4180 , debug = require('browser/debug')('mocha:runnable') 4142 , debug = require('browser/debug')('mocha:runnable')
4181 , milliseconds = require('./ms'); 4143 , milliseconds = require('./ms');
4182 4144
4183 /** 4145 /**
4184 * Save timer references to avoid Sinon interfering (see GH-237). 4146 * Save timer references to avoid Sinon interfering (see GH-237).
(...skipping 27 matching lines...) Expand all
4212 4174
4213 function Runnable(title, fn) { 4175 function Runnable(title, fn) {
4214 this.title = title; 4176 this.title = title;
4215 this.fn = fn; 4177 this.fn = fn;
4216 this.async = fn && fn.length; 4178 this.async = fn && fn.length;
4217 this.sync = ! this.async; 4179 this.sync = ! this.async;
4218 this._timeout = 2000; 4180 this._timeout = 2000;
4219 this._slow = 75; 4181 this._slow = 75;
4220 this._enableTimeouts = true; 4182 this._enableTimeouts = true;
4221 this.timedOut = false; 4183 this.timedOut = false;
4222 this._trace = new Error('done() called multiple times')
4223 } 4184 }
4224 4185
4225 /** 4186 /**
4226 * Inherit from `EventEmitter.prototype`. 4187 * Inherit from `EventEmitter.prototype`.
4227 */ 4188 */
4228 4189
4229 function F(){}; 4190 function F(){};
4230 F.prototype = EventEmitter.prototype; 4191 F.prototype = EventEmitter.prototype;
4231 Runnable.prototype = new F; 4192 Runnable.prototype = new F;
4232 Runnable.prototype.constructor = Runnable; 4193 Runnable.prototype.constructor = Runnable;
4233 4194
4234 4195
4235 /** 4196 /**
4236 * Set & get timeout `ms`. 4197 * Set & get timeout `ms`.
4237 * 4198 *
4238 * @param {Number|String} ms 4199 * @param {Number|String} ms
4239 * @return {Runnable|Number} ms or self 4200 * @return {Runnable|Number} ms or self
4240 * @api private 4201 * @api private
4241 */ 4202 */
4242 4203
4243 Runnable.prototype.timeout = function(ms){ 4204 Runnable.prototype.timeout = function(ms){
4244 if (0 == arguments.length) return this._timeout; 4205 if (0 == arguments.length) return this._timeout;
4245 if (ms === 0) this._enableTimeouts = false;
4246 if ('string' == typeof ms) ms = milliseconds(ms); 4206 if ('string' == typeof ms) ms = milliseconds(ms);
4247 debug('timeout %d', ms); 4207 debug('timeout %d', ms);
4248 this._timeout = ms; 4208 this._timeout = ms;
4249 if (this.timer) this.resetTimeout(); 4209 if (this.timer) this.resetTimeout();
4250 return this; 4210 return this;
4251 }; 4211 };
4252 4212
4253 /** 4213 /**
4254 * Set & get slow `ms`. 4214 * Set & get slow `ms`.
4255 * 4215 *
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
4325 * @api private 4285 * @api private
4326 */ 4286 */
4327 4287
4328 Runnable.prototype.resetTimeout = function(){ 4288 Runnable.prototype.resetTimeout = function(){
4329 var self = this; 4289 var self = this;
4330 var ms = this.timeout() || 1e9; 4290 var ms = this.timeout() || 1e9;
4331 4291
4332 if (!this._enableTimeouts) return; 4292 if (!this._enableTimeouts) return;
4333 this.clearTimeout(); 4293 this.clearTimeout();
4334 this.timer = setTimeout(function(){ 4294 this.timer = setTimeout(function(){
4335 if (!self._enableTimeouts) return;
4336 self.callback(new Error('timeout of ' + ms + 'ms exceeded')); 4295 self.callback(new Error('timeout of ' + ms + 'ms exceeded'));
4337 self.timedOut = true; 4296 self.timedOut = true;
4338 }, ms); 4297 }, ms);
4339 }; 4298 };
4340 4299
4341 /** 4300 /**
4342 * Whitelist these globals for this test run 4301 * Whitelist these globals for this test run
4343 * 4302 *
4344 * @api private 4303 * @api private
4345 */ 4304 */
(...skipping 16 matching lines...) Expand all
4362 , finished 4321 , finished
4363 , emitted; 4322 , emitted;
4364 4323
4365 // Some times the ctx exists but it is not runnable 4324 // Some times the ctx exists but it is not runnable
4366 if (ctx && ctx.runnable) ctx.runnable(this); 4325 if (ctx && ctx.runnable) ctx.runnable(this);
4367 4326
4368 // called multiple times 4327 // called multiple times
4369 function multiple(err) { 4328 function multiple(err) {
4370 if (emitted) return; 4329 if (emitted) return;
4371 emitted = true; 4330 emitted = true;
4372 self.emit('error', err || new Error('done() called multiple times; stacktrac e may be inaccurate')); 4331 self.emit('error', err || new Error('done() called multiple times'));
4373 } 4332 }
4374 4333
4375 // finished 4334 // finished
4376 function done(err) { 4335 function done(err) {
4377 var ms = self.timeout(); 4336 var ms = self.timeout();
4378 if (self.timedOut) return; 4337 if (self.timedOut) return;
4379 if (finished) return multiple(err || self._trace); 4338 if (finished) return multiple(err);
4380 self.clearTimeout(); 4339 self.clearTimeout();
4381 self.duration = new Date - start; 4340 self.duration = new Date - start;
4382 finished = true; 4341 finished = true;
4383 if (!err && self.duration > ms && self._enableTimeouts) err = new Error('tim eout of ' + ms + 'ms exceeded'); 4342 if (!err && self.duration > ms && self._enableTimeouts) err = new Error('tim eout of ' + ms + 'ms exceeded');
4384 fn(err); 4343 fn(err);
4385 } 4344 }
4386 4345
4387 // for .resetTimeout() 4346 // for .resetTimeout()
4388 this.callback = done; 4347 this.callback = done;
4389 4348
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
4976 4935
4977 /** 4936 /**
4978 * Handle uncaught exceptions. 4937 * Handle uncaught exceptions.
4979 * 4938 *
4980 * @param {Error} err 4939 * @param {Error} err
4981 * @api private 4940 * @api private
4982 */ 4941 */
4983 4942
4984 Runner.prototype.uncaught = function(err){ 4943 Runner.prototype.uncaught = function(err){
4985 if (err) { 4944 if (err) {
4986 debug('uncaught exception %s', err !== function () { 4945 debug('uncaught exception %s', err.message);
4987 return this;
4988 }.call(err) ? err : ( err.message || err ));
4989 } else { 4946 } else {
4990 debug('uncaught undefined exception'); 4947 debug('uncaught undefined exception');
4991 err = new Error('Caught undefined error, did you throw without specifying wh at?'); 4948 err = new Error('Catched undefined error, did you throw without specifying w hat?');
4992 } 4949 }
4950
4951 var runnable = this.currentRunnable;
4952 if (!runnable || 'failed' == runnable.state) return;
4953 runnable.clearTimeout();
4993 err.uncaught = true; 4954 err.uncaught = true;
4994
4995 var runnable = this.currentRunnable;
4996 if (!runnable) return;
4997
4998 var wasAlreadyDone = runnable.state;
4999 this.fail(runnable, err); 4955 this.fail(runnable, err);
5000 4956
5001 runnable.clearTimeout();
5002
5003 if (wasAlreadyDone) return;
5004
5005 // recover from test 4957 // recover from test
5006 if ('test' == runnable.type) { 4958 if ('test' == runnable.type) {
5007 this.emit('test end', runnable); 4959 this.emit('test end', runnable);
5008 this.hookUp('afterEach', this.next); 4960 this.hookUp('afterEach', this.next);
5009 return; 4961 return;
5010 } 4962 }
5011 4963
5012 // bail on hooks 4964 // bail on hooks
5013 this.emit('end'); 4965 this.emit('end');
5014 }; 4966 };
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
5054 5006
5055 /** 5007 /**
5056 * Cleanly abort execution 5008 * Cleanly abort execution
5057 * 5009 *
5058 * @return {Runner} for chaining 5010 * @return {Runner} for chaining
5059 * @api public 5011 * @api public
5060 */ 5012 */
5061 Runner.prototype.abort = function(){ 5013 Runner.prototype.abort = function(){
5062 debug('aborting'); 5014 debug('aborting');
5063 this._abort = true; 5015 this._abort = true;
5064 }; 5016 }
5065 5017
5066 /** 5018 /**
5067 * Filter leaks with the given globals flagged as `ok`. 5019 * Filter leaks with the given globals flagged as `ok`.
5068 * 5020 *
5069 * @param {Array} ok 5021 * @param {Array} ok
5070 * @param {Array} globals 5022 * @param {Array} globals
5071 * @return {Array} 5023 * @return {Array}
5072 * @api private 5024 * @api private
5073 */ 5025 */
5074 5026
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
5118 return ['errno']; 5070 return ['errno'];
5119 } 5071 }
5120 } 5072 }
5121 5073
5122 return []; 5074 return [];
5123 } 5075 }
5124 5076
5125 }); // module: runner.js 5077 }); // module: runner.js
5126 5078
5127 require.register("suite.js", function(module, exports, require){ 5079 require.register("suite.js", function(module, exports, require){
5080
5128 /** 5081 /**
5129 * Module dependencies. 5082 * Module dependencies.
5130 */ 5083 */
5131 5084
5132 var EventEmitter = require('browser/events').EventEmitter 5085 var EventEmitter = require('browser/events').EventEmitter
5133 , debug = require('browser/debug')('mocha:suite') 5086 , debug = require('browser/debug')('mocha:suite')
5134 , milliseconds = require('./ms') 5087 , milliseconds = require('./ms')
5135 , utils = require('./utils') 5088 , utils = require('./utils')
5136 , Hook = require('./hook'); 5089 , Hook = require('./hook');
5137 5090
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
5222 /** 5175 /**
5223 * Set timeout `ms` or short-hand such as "2s". 5176 * Set timeout `ms` or short-hand such as "2s".
5224 * 5177 *
5225 * @param {Number|String} ms 5178 * @param {Number|String} ms
5226 * @return {Suite|Number} for chaining 5179 * @return {Suite|Number} for chaining
5227 * @api private 5180 * @api private
5228 */ 5181 */
5229 5182
5230 Suite.prototype.timeout = function(ms){ 5183 Suite.prototype.timeout = function(ms){
5231 if (0 == arguments.length) return this._timeout; 5184 if (0 == arguments.length) return this._timeout;
5232 if (ms === 0) this._enableTimeouts = false;
5233 if ('string' == typeof ms) ms = milliseconds(ms); 5185 if ('string' == typeof ms) ms = milliseconds(ms);
5234 debug('timeout %d', ms); 5186 debug('timeout %d', ms);
5235 this._timeout = parseInt(ms, 10); 5187 this._timeout = parseInt(ms, 10);
5236 return this; 5188 return this;
5237 }; 5189 };
5238 5190
5239 /** 5191 /**
5240 * Set timeout `enabled`. 5192 * Set timeout `enabled`.
5241 * 5193 *
5242 * @param {Boolean} enabled 5194 * @param {Boolean} enabled
5243 * @return {Suite|Boolean} self or enabled 5195 * @return {Suite|Boolean} self or enabled
5244 * @api private 5196 * @api private
5245 */ 5197 */
5246 5198
5247 Suite.prototype.enableTimeouts = function(enabled){ 5199 Suite.prototype.enableTimeouts = function(enabled){
5248 if (arguments.length === 0) return this._enableTimeouts; 5200 if (arguments.length === 0) return this._enableTimeouts;
5249 debug('enableTimeouts %s', enabled); 5201 debug('enableTimeouts %s', enabled);
5250 this._enableTimeouts = enabled; 5202 this._enableTimeouts = enabled;
5251 return this; 5203 return this;
5252 }; 5204 }
5253 5205
5254 /** 5206 /**
5255 * Set slow `ms` or short-hand such as "2s". 5207 * Set slow `ms` or short-hand such as "2s".
5256 * 5208 *
5257 * @param {Number|String} ms 5209 * @param {Number|String} ms
5258 * @return {Suite|Number} for chaining 5210 * @return {Suite|Number} for chaining
5259 * @api private 5211 * @api private
5260 */ 5212 */
5261 5213
5262 Suite.prototype.slow = function(ms){ 5214 Suite.prototype.slow = function(ms){
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
5471 utils.forEach(this.tests, fn); 5423 utils.forEach(this.tests, fn);
5472 utils.forEach(this.suites, function(suite){ 5424 utils.forEach(this.suites, function(suite){
5473 suite.eachTest(fn); 5425 suite.eachTest(fn);
5474 }); 5426 });
5475 return this; 5427 return this;
5476 }; 5428 };
5477 5429
5478 }); // module: suite.js 5430 }); // module: suite.js
5479 5431
5480 require.register("test.js", function(module, exports, require){ 5432 require.register("test.js", function(module, exports, require){
5433
5481 /** 5434 /**
5482 * Module dependencies. 5435 * Module dependencies.
5483 */ 5436 */
5484 5437
5485 var Runnable = require('./runnable'); 5438 var Runnable = require('./runnable');
5486 5439
5487 /** 5440 /**
5488 * Expose `Test`. 5441 * Expose `Test`.
5489 */ 5442 */
5490 5443
(...skipping 25 matching lines...) Expand all
5516 5469
5517 }); // module: test.js 5470 }); // module: test.js
5518 5471
5519 require.register("utils.js", function(module, exports, require){ 5472 require.register("utils.js", function(module, exports, require){
5520 /** 5473 /**
5521 * Module dependencies. 5474 * Module dependencies.
5522 */ 5475 */
5523 5476
5524 var fs = require('browser/fs') 5477 var fs = require('browser/fs')
5525 , path = require('browser/path') 5478 , path = require('browser/path')
5526 , basename = path.basename
5527 , exists = fs.existsSync || path.existsSync
5528 , glob = require('browser/glob')
5529 , join = path.join 5479 , join = path.join
5530 , debug = require('browser/debug')('mocha:watch'); 5480 , debug = require('browser/debug')('mocha:watch');
5531 5481
5532 /** 5482 /**
5533 * Ignored directories. 5483 * Ignored directories.
5534 */ 5484 */
5535 5485
5536 var ignore = ['node_modules', '.git']; 5486 var ignore = ['node_modules', '.git'];
5537 5487
5538 /** 5488 /**
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
5740 var spaces = str.match(/^\n?( *)/)[1].length 5690 var spaces = str.match(/^\n?( *)/)[1].length
5741 , tabs = str.match(/^\n?(\t*)/)[1].length 5691 , tabs = str.match(/^\n?(\t*)/)[1].length
5742 , re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces ) + '}', 'gm'); 5692 , re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces ) + '}', 'gm');
5743 5693
5744 str = str.replace(re, ''); 5694 str = str.replace(re, '');
5745 5695
5746 return exports.trim(str); 5696 return exports.trim(str);
5747 }; 5697 };
5748 5698
5749 /** 5699 /**
5700 * Escape regular expression characters in `str`.
5701 *
5702 * @param {String} str
5703 * @return {String}
5704 * @api private
5705 */
5706
5707 exports.escapeRegexp = function(str){
5708 return str.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&");
5709 };
5710
5711 /**
5750 * Trim the given `str`. 5712 * Trim the given `str`.
5751 * 5713 *
5752 * @param {String} str 5714 * @param {String} str
5753 * @return {String} 5715 * @return {String}
5754 * @api private 5716 * @api private
5755 */ 5717 */
5756 5718
5757 exports.trim = function(str){ 5719 exports.trim = function(str){
5758 return str.replace(/^\s+|\s+$/g, ''); 5720 return str.replace(/^\s+|\s+$/g, '');
5759 }; 5721 };
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
5798 } 5760 }
5799 5761
5800 /** 5762 /**
5801 * Highlight the contents of tag `name`. 5763 * Highlight the contents of tag `name`.
5802 * 5764 *
5803 * @param {String} name 5765 * @param {String} name
5804 * @api private 5766 * @api private
5805 */ 5767 */
5806 5768
5807 exports.highlightTags = function(name) { 5769 exports.highlightTags = function(name) {
5808 var code = document.getElementById('mocha').getElementsByTagName(name); 5770 var code = document.getElementsByTagName(name);
5809 for (var i = 0, len = code.length; i < len; ++i) { 5771 for (var i = 0, len = code.length; i < len; ++i) {
5810 code[i].innerHTML = highlight(code[i].innerHTML); 5772 code[i].innerHTML = highlight(code[i].innerHTML);
5811 } 5773 }
5812 }; 5774 };
5813 5775
5814 5776
5815 /** 5777 /**
5816 * Stringify `obj`. 5778 * Stringify `obj`.
5817 * 5779 *
5818 * @param {Object} obj 5780 * @param {Object} obj
5819 * @return {String} 5781 * @return {String}
5820 * @api private 5782 * @api private
5821 */ 5783 */
5822 5784
5823 exports.stringify = function(obj) { 5785 exports.stringify = function(obj) {
5824 if (obj instanceof RegExp) return obj.toString(); 5786 if (obj instanceof RegExp) return obj.toString();
5825 return JSON.stringify(exports.canonicalize(obj), null, 2).replace(/,(\n|$)/g, '$1'); 5787 return JSON.stringify(exports.canonicalize(obj), null, 2).replace(/,(\n|$)/g, '$1');
5826 }; 5788 }
5827 5789
5828 /** 5790 /**
5829 * Return a new object that has the keys in sorted order. 5791 * Return a new object that has the keys in sorted order.
5830 * @param {Object} obj 5792 * @param {Object} obj
5831 * @param {Array} [stack]
5832 * @return {Object} 5793 * @return {Object}
5833 * @api private 5794 * @api private
5834 */ 5795 */
5835 5796
5836 exports.canonicalize = function(obj, stack) { 5797 exports.canonicalize = function(obj, stack) {
5837 stack = stack || []; 5798 stack = stack || [];
5838 5799
5839 if (exports.indexOf(stack, obj) !== -1) return '[Circular]'; 5800 if (exports.indexOf(stack, obj) !== -1) return '[Circular]';
5840 5801
5841 var canonicalizedObj; 5802 var canonicalizedObj;
5842 5803
5843 if ({}.toString.call(obj) === '[object Array]') { 5804 if ({}.toString.call(obj) === '[object Array]') {
5844 stack.push(obj); 5805 stack.push(obj);
5845 canonicalizedObj = exports.map(obj, function (item) { 5806 canonicalizedObj = exports.map(obj, function(item) {
5846 return exports.canonicalize(item, stack); 5807 return exports.canonicalize(item, stack);
5847 }); 5808 });
5848 stack.pop(); 5809 stack.pop();
5849 } else if (typeof obj === 'object' && obj !== null) { 5810 } else if (typeof obj === 'object' && obj !== null) {
5850 stack.push(obj); 5811 stack.push(obj);
5851 canonicalizedObj = {}; 5812 canonicalizedObj = {};
5852 exports.forEach(exports.keys(obj).sort(), function (key) { 5813 exports.forEach(exports.keys(obj).sort(), function(key) {
5853 canonicalizedObj[key] = exports.canonicalize(obj[key], stack); 5814 canonicalizedObj[key] = exports.canonicalize(obj[key], stack);
5854 }); 5815 });
5855 stack.pop(); 5816 stack.pop();
5856 } else { 5817 } else {
5857 canonicalizedObj = obj; 5818 canonicalizedObj = obj;
5858 } 5819 }
5859 5820
5860 return canonicalizedObj; 5821 return canonicalizedObj;
5861 }; 5822 }
5862
5863 /**
5864 * Lookup file names at the given `path`.
5865 */
5866 exports.lookupFiles = function lookupFiles(path, extensions, recursive) {
5867 var files = [];
5868 var re = new RegExp('\\.(' + extensions.join('|') + ')$');
5869
5870 if (!exists(path)) {
5871 if (exists(path + '.js')) {
5872 path += '.js';
5873 } else {
5874 files = glob.sync(path);
5875 if (!files.length) throw new Error("cannot resolve path (or pattern) '" + path + "'");
5876 return files;
5877 }
5878 }
5879
5880 try {
5881 var stat = fs.statSync(path);
5882 if (stat.isFile()) return path;
5883 }
5884 catch (ignored) {
5885 return;
5886 }
5887
5888 fs.readdirSync(path).forEach(function(file){
5889 file = join(path, file);
5890 try {
5891 var stat = fs.statSync(file);
5892 if (stat.isDirectory()) {
5893 if (recursive) {
5894 files = files.concat(lookupFiles(file, extensions, recursive));
5895 }
5896 return;
5897 }
5898 }
5899 catch (ignored) {
5900 return;
5901 }
5902 if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') return;
5903 files.push(file);
5904 });
5905
5906 return files;
5907 };
5908 5823
5909 }); // module: utils.js 5824 }); // module: utils.js
5910 // The global object is "self" in Web Workers. 5825 // The global object is "self" in Web Workers.
5911 var global = (function() { return this; })(); 5826 var global = (function() { return this; })();
5912 5827
5913 /** 5828 /**
5914 * Save timer references to avoid Sinon interfering (see GH-237). 5829 * Save timer references to avoid Sinon interfering (see GH-237).
5915 */ 5830 */
5916 5831
5917 var Date = global.Date; 5832 var Date = global.Date;
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
6046 mocha.run = function(fn){ 5961 mocha.run = function(fn){
6047 var options = mocha.options; 5962 var options = mocha.options;
6048 mocha.globals('location'); 5963 mocha.globals('location');
6049 5964
6050 var query = Mocha.utils.parseQuery(global.location.search || ''); 5965 var query = Mocha.utils.parseQuery(global.location.search || '');
6051 if (query.grep) mocha.grep(query.grep); 5966 if (query.grep) mocha.grep(query.grep);
6052 if (query.invert) mocha.invert(); 5967 if (query.invert) mocha.invert();
6053 5968
6054 return Mocha.prototype.run.call(mocha, function(err){ 5969 return Mocha.prototype.run.call(mocha, function(err){
6055 // The DOM Document is not available in Web Workers. 5970 // The DOM Document is not available in Web Workers.
6056 var document = global.document; 5971 if (global.document) {
6057 if (document && document.getElementById('mocha') && options.noHighlighting ! == true) {
6058 Mocha.utils.highlightTags('code'); 5972 Mocha.utils.highlightTags('code');
6059 } 5973 }
6060 if (fn) fn(err); 5974 if (fn) fn(err);
6061 }); 5975 });
6062 }; 5976 };
6063 5977
6064 /** 5978 /**
6065 * Expose the process shim. 5979 * Expose the process shim.
6066 */ 5980 */
6067 5981
6068 Mocha.process = process; 5982 Mocha.process = process;
6069 })(); 5983 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698