mocha 2.3.0 → 2.3.4

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  var Base = require('./base');
6
- var create = require('lodash.create');
6
+ var inherits = require('../utils').inherits;
7
7
  var color = Base.color;
8
8
  var cursor = Base.cursor;
9
9
 
@@ -80,7 +80,4 @@ function Spec(runner) {
80
80
  /**
81
81
  * Inherit from `Base.prototype`.
82
82
  */
83
-
84
- Spec.prototype = create(Base.prototype, {
85
- constructor: Spec
86
- });
83
+ inherits(Spec, Base);
@@ -17,7 +17,7 @@ html
17
17
  .misses= cov.misses
18
18
 
19
19
  #files
20
- each file in cov.files
20
+ for file in cov.files
21
21
  .file
22
22
  h2(id=file.filename)= file.filename
23
23
  #stats(class=coverageClass(file.coverage))
@@ -33,7 +33,7 @@ html
33
33
  th Hits
34
34
  th Source
35
35
  tbody
36
- each line, number in file.source
36
+ for line, number in file.source
37
37
  if line.coverage > 0
38
38
  tr.hit
39
39
  td.line= number
@@ -1,12 +1,12 @@
1
1
  #menu
2
2
  li
3
3
  a(href='#overview') overview
4
- each file in cov.files
4
+ for file in cov.files
5
5
  li
6
6
  span.cov(class=coverageClass(file.coverage)) #{file.coverage | 0}
7
7
  a(href='##{file.filename}')
8
- - var segments = file.filename.split('/')
9
- - var basename = segments.pop()
8
+ segments = file.filename.split('/')
9
+ basename = segments.pop()
10
10
  if segments.length
11
11
  span.dirname= segments.join('/') + '/'
12
12
  span.basename= basename
@@ -3,9 +3,10 @@
3
3
  */
4
4
 
5
5
  var Base = require('./base');
6
- var create = require('lodash.create');
6
+ var utils = require('../utils');
7
+ var inherits = utils.inherits;
7
8
  var fs = require('fs');
8
- var escape = require('../utils').escape;
9
+ var escape = utils.escape;
9
10
 
10
11
  /**
11
12
  * Save timer references to avoid Sinon interfering (see GH-237).
@@ -76,6 +77,11 @@ function XUnit(runner, options) {
76
77
  });
77
78
  }
78
79
 
80
+ /**
81
+ * Inherit from `Base.prototype`.
82
+ */
83
+ inherits(XUnit, Base);
84
+
79
85
  /**
80
86
  * Override done to close the stream (if it's a file).
81
87
  *
@@ -92,14 +98,6 @@ XUnit.prototype.done = function(failures, fn) {
92
98
  }
93
99
  };
94
100
 
95
- /**
96
- * Inherit from `Base.prototype`.
97
- */
98
-
99
- XUnit.prototype = create(Base.prototype, {
100
- constructor: XUnit
101
- });
102
-
103
101
  /**
104
102
  * Write out the given line.
105
103
  *
package/lib/runnable.js CHANGED
@@ -4,10 +4,10 @@
4
4
 
5
5
  var EventEmitter = require('events').EventEmitter;
6
6
  var Pending = require('./pending');
7
- var create = require('lodash.create');
8
7
  var debug = require('debug')('mocha:runnable');
9
8
  var milliseconds = require('./ms');
10
9
  var utils = require('./utils');
10
+ var inherits = utils.inherits;
11
11
 
12
12
  /**
13
13
  * Save timer references to avoid Sinon interfering (see GH-237).
@@ -57,10 +57,7 @@ function Runnable(title, fn) {
57
57
  /**
58
58
  * Inherit from `EventEmitter.prototype`.
59
59
  */
60
-
61
- Runnable.prototype = create(EventEmitter.prototype, {
62
- constructor: Runnable
63
- });
60
+ inherits(Runnable, EventEmitter);
64
61
 
65
62
  /**
66
63
  * Set & get timeout `ms`.
package/lib/runner.js CHANGED
@@ -4,15 +4,17 @@
4
4
 
5
5
  var EventEmitter = require('events').EventEmitter;
6
6
  var Pending = require('./pending');
7
- var create = require('lodash.create');
7
+ var utils = require('./utils');
8
+ var inherits = utils.inherits;
8
9
  var debug = require('debug')('mocha:runner');
9
- var filter = require('./utils').filter;
10
- var indexOf = require('./utils').indexOf;
11
- var keys = require('./utils').keys;
12
- var stackFilter = require('./utils').stackTraceFilter();
13
- var stringify = require('./utils').stringify;
14
- var type = require('./utils').type;
15
- var undefinedError = require('./utils').undefinedError;
10
+ var Runnable = require('./runnable');
11
+ var filter = utils.filter;
12
+ var indexOf = utils.indexOf;
13
+ var keys = utils.keys;
14
+ var stackFilter = utils.stackTraceFilter();
15
+ var stringify = utils.stringify;
16
+ var type = utils.type;
17
+ var undefinedError = utils.undefinedError;
16
18
 
17
19
  /**
18
20
  * Non-enumerable globals.
@@ -63,6 +65,7 @@ function Runner(suite, delay) {
63
65
  this._abort = false;
64
66
  this._delay = delay;
65
67
  this.suite = suite;
68
+ this.started = false;
66
69
  this.total = suite.total();
67
70
  this.failures = 0;
68
71
  this.on('test end', function(test) {
@@ -87,10 +90,7 @@ Runner.immediately = global.setImmediate || process.nextTick;
87
90
  /**
88
91
  * Inherit from `EventEmitter.prototype`.
89
92
  */
90
-
91
- Runner.prototype = create(EventEmitter.prototype, {
92
- constructor: Runner
93
- });
93
+ inherits(Runner, EventEmitter);
94
94
 
95
95
  /**
96
96
  * Run tests with full titles matching `re`. Updates runner.total
@@ -288,12 +288,13 @@ Runner.prototype.hook = function(name, fn) {
288
288
 
289
289
  self.emit('hook', hook);
290
290
 
291
- hook.on('error', function(err) {
292
- self.failHook(hook, err);
293
- });
291
+ if (!hook.listeners('error').length) {
292
+ hook.on('error', function(err) {
293
+ self.failHook(hook, err);
294
+ });
295
+ }
294
296
 
295
297
  hook.run(function(err) {
296
- hook.removeAllListeners('error');
297
298
  var testError = hook.error();
298
299
  if (testError) {
299
300
  self.fail(self.test, testError);
@@ -388,7 +389,8 @@ Runner.prototype.hookDown = function(name, fn) {
388
389
  Runner.prototype.parents = function() {
389
390
  var suite = this.suite;
390
391
  var suites = [];
391
- while (suite = suite.parent) {
392
+ while (suite.parent) {
393
+ suite = suite.parent;
392
394
  suites.push(suite);
393
395
  }
394
396
  return suites;
@@ -569,7 +571,7 @@ Runner.prototype.runSuite = function(suite, fn) {
569
571
 
570
572
  debug('run suite %s', suite.fullTitle());
571
573
 
572
- if (!total) {
574
+ if (!total || (self.failures && suite._bail)) {
573
575
  return fn();
574
576
  }
575
577
 
@@ -654,7 +656,20 @@ Runner.prototype.uncaught = function(err) {
654
656
  err.uncaught = true;
655
657
 
656
658
  var runnable = this.currentRunnable;
659
+
657
660
  if (!runnable) {
661
+ runnable = new Runnable('Uncaught error outside test suite');
662
+ runnable.parent = this.suite;
663
+
664
+ if (this.started) {
665
+ this.fail(runnable, err);
666
+ } else {
667
+ // Can't recover from this failure
668
+ this.emit('start');
669
+ this.fail(runnable, err);
670
+ this.emit('end');
671
+ }
672
+
658
673
  return;
659
674
  }
660
675
 
@@ -713,6 +728,7 @@ Runner.prototype.run = function(fn) {
713
728
  }
714
729
 
715
730
  function start() {
731
+ self.started = true;
716
732
  self.emit('start');
717
733
  self.runSuite(rootSuite, function() {
718
734
  debug('finished running');
@@ -808,7 +824,8 @@ function filterLeaks(ok, globals) {
808
824
  */
809
825
  function extraGlobals() {
810
826
  if (typeof process === 'object' && typeof process.version === 'string') {
811
- var nodeVersion = process.version.split('.').reduce(function(a, v) {
827
+ var parts = process.version.split('.');
828
+ var nodeVersion = utils.reduce(parts, function(a, v) {
812
829
  return a << 8 | v;
813
830
  });
814
831
 
package/lib/suite.js CHANGED
@@ -4,10 +4,10 @@
4
4
 
5
5
  var EventEmitter = require('events').EventEmitter;
6
6
  var Hook = require('./hook');
7
- var create = require('lodash.create');
7
+ var utils = require('./utils');
8
+ var inherits = utils.inherits;
8
9
  var debug = require('debug')('mocha:suite');
9
10
  var milliseconds = require('./ms');
10
- var utils = require('./utils');
11
11
 
12
12
  /**
13
13
  * Expose `Suite`.
@@ -66,10 +66,7 @@ function Suite(title, parentContext) {
66
66
  /**
67
67
  * Inherit from `EventEmitter.prototype`.
68
68
  */
69
-
70
- Suite.prototype = create(EventEmitter.prototype, {
71
- constructor: Suite
72
- });
69
+ inherits(Suite, EventEmitter);
73
70
 
74
71
  /**
75
72
  * Return a clone of this `Suite`.
package/lib/test.js CHANGED
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  var Runnable = require('./runnable');
6
- var create = require('lodash.create');
6
+ var inherits = require('./utils').inherits;
7
7
 
8
8
  /**
9
9
  * Expose `Test`.
@@ -27,7 +27,4 @@ function Test(title, fn) {
27
27
  /**
28
28
  * Inherit from `Runnable.prototype`.
29
29
  */
30
-
31
- Test.prototype = create(Runnable.prototype, {
32
- constructor: Test
33
- });
30
+ inherits(Test, Runnable);
package/lib/utils.js CHANGED
@@ -19,6 +19,8 @@ var watchFile = require('fs').watchFile;
19
19
 
20
20
  var ignore = ['node_modules', '.git'];
21
21
 
22
+ exports.inherits = require('util').inherits;
23
+
22
24
  /**
23
25
  * Escape special characters in the given string of html.
24
26
  *
@@ -687,7 +689,7 @@ exports.getError = function(err) {
687
689
  * @description
688
690
  * When invoking this function you get a filter function that get the Error.stack as an input,
689
691
  * and return a prettify output.
690
- * (i.e: strip Mocha, node_modules, bower and componentJS from stack trace).
692
+ * (i.e: strip Mocha and internal node functions from stack trace).
691
693
  * @returns {Function}
692
694
  */
693
695
  exports.stackTraceFilter = function() {
@@ -699,14 +701,10 @@ exports.stackTraceFilter = function() {
699
701
  : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/');
700
702
 
701
703
  function isMochaInternal(line) {
702
- return (~line.indexOf('node_modules' + slash + 'mocha'))
703
- || (~line.indexOf('components' + slash + 'mochajs'))
704
- || (~line.indexOf('components' + slash + 'mocha'));
705
- }
706
-
707
- // node_modules, bower, componentJS
708
- function isBrowserModule(line) {
709
- return (~line.indexOf('node_modules')) || (~line.indexOf('components'));
704
+ return (~line.indexOf('node_modules' + slash + 'mocha' + slash))
705
+ || (~line.indexOf('components' + slash + 'mochajs' + slash))
706
+ || (~line.indexOf('components' + slash + 'mocha' + slash))
707
+ || (~line.indexOf(slash + 'mocha.js'));
710
708
  }
711
709
 
712
710
  function isNodeInternal(line) {
@@ -722,11 +720,11 @@ exports.stackTraceFilter = function() {
722
720
  stack = stack.split('\n');
723
721
 
724
722
  stack = exports.reduce(stack, function(list, line) {
725
- if (is.node && (isMochaInternal(line) || isNodeInternal(line))) {
723
+ if (isMochaInternal(line)) {
726
724
  return list;
727
725
  }
728
726
 
729
- if (is.browser && (isBrowserModule(line))) {
727
+ if (is.node && isNodeInternal(line)) {
730
728
  return list;
731
729
  }
732
730