diff --git a/lib/runner.js b/lib/runner.js
--- a/lib/runner.js
+++ b/lib/runner.js
@@ -168,10 +168,6 @@ Runner.prototype.checkGlobals = function(test){
     ok = ok.concat(test._allowedGlobals || []);
   }
 
-  // check length - 2 ('errno' and 'location' globals)
-  if (isNode && 1 == ok.length - globals.length) return;
-  else if (2 == ok.length - globals.length) return;
-
   if(this.prevGlobalsLength == globals.length) return;
   this.prevGlobalsLength = globals.length;
 

diff --git a/test/runner.js b/test/runner.js
--- a/test/runner.js
+++ b/test/runner.js
@@ -97,6 +97,21 @@ describe('Runner', function(){
       runner.checkGlobals('im a test');
     })
 
+    it('should emit "fail" when a single new disallowed global is introduced after a single extra global is allowed', function(done) {
+      var doneCalled = false;
+      runner.globals('good');
+      global.bad = 1;
+      runner.on('fail', function(test, err) {
+        delete global.bad;
+        done();
+        doneCalled = true;
+      });
+      runner.checkGlobals('test');
+      if (!doneCalled) {
+        done(Error("Expected test failure did not occur."));
+      }
+    });
+
     it ('should not fail when a new common global is introduced', function(){
       // verify that the prop isn't enumerable
       delete global.XMLHttpRequest;

How is mocha.globals supposed to work?
Sorry for the terrible issue title :grin:.

When testing a jQuery plugin with Mocha, I'was warned about a global variable leak which [seems to be normal](http://bugs.jquery.com/ticket/14156).

So, I decided to get rid of it using `mocha.globals(["jQuery*"])` and it worked as expected... but I also tried without the wildcard like this `mocha.globals(["jQuery"])`, this worked too... and even `mocha.globals(["wth"])` got the job done.

So, maybe there is something a little buggy here, what do you think?

