Removed references to 'window'; using jasmine.getGlobal() instead in order to better support non-browser environments.

Better protection around access to console.
The global object is now pretty-printed as "<global>", not "<window>".
Tests are a little closer to passing in node.js.
This commit is contained in:
Lee Byrd & Christian Williams
2010-06-22 16:22:09 -07:00
parent e60f22a2e5
commit 01d842fdfd
10 changed files with 69 additions and 62 deletions

View File

@@ -21,8 +21,8 @@ jasmine.PrettyPrinter.prototype.format = function(value) {
this.emitScalar('undefined');
} else if (value === null) {
this.emitScalar('null');
} else if (value.navigator && value.frames && value.setTimeout) {
this.emitScalar('<window>');
} else if (value === jasmine.getGlobal()) {
this.emitScalar('<global>');
} else if (value instanceof jasmine.Matchers.Any) {
this.emitScalar(value.toString());
} else if (typeof value === 'string') {

View File

@@ -34,6 +34,7 @@ jasmine.Reporters.reporter = function(callbacks) {
that.doCallback(that.callbacks.specCallback, spec);
},
log: function (str) {
var console = jasmine.getGlobal().console;
if (console && console.log) console.log(str);
}
};

View File

@@ -26,6 +26,14 @@ jasmine.undefined = jasmine.___undefined___;
*/
jasmine.DEFAULT_UPDATE_INTERVAL = 250;
jasmine.getGlobal = function() {
function getGlobal() {
return this;
}
return getGlobal();
};
/**
* Allows for bound functions to be compared. Internal use only.
*
@@ -46,10 +54,10 @@ jasmine.bindOriginal_ = function(base, name) {
}
};
jasmine.setTimeout = jasmine.bindOriginal_(window, 'setTimeout');
jasmine.clearTimeout = jasmine.bindOriginal_(window, 'clearTimeout');
jasmine.setInterval = jasmine.bindOriginal_(window, 'setInterval');
jasmine.clearInterval = jasmine.bindOriginal_(window, 'clearInterval');
jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout');
jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout');
jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval');
jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval');
jasmine.MessageResult = function(values) {
this.type = 'log';

View File

@@ -126,10 +126,10 @@ jasmine.Clock = {
},
real: {
setTimeout: window.setTimeout,
clearTimeout: window.clearTimeout,
setInterval: window.setInterval,
clearInterval: window.clearInterval
setTimeout: jasmine.getGlobal().setTimeout,
clearTimeout: jasmine.getGlobal().clearTimeout,
setInterval: jasmine.getGlobal().setInterval,
clearInterval: jasmine.getGlobal().clearInterval
},
assertInstalled: function() {
@@ -143,7 +143,7 @@ jasmine.Clock = {
jasmine.Clock.installed = jasmine.Clock.real;
//else for IE support
window.setTimeout = function(funcToCall, millis) {
jasmine.getGlobal().setTimeout = function(funcToCall, millis) {
if (jasmine.Clock.installed.setTimeout.apply) {
return jasmine.Clock.installed.setTimeout.apply(this, arguments);
} else {
@@ -151,7 +151,7 @@ window.setTimeout = function(funcToCall, millis) {
}
};
window.setInterval = function(funcToCall, millis) {
jasmine.getGlobal().setInterval = function(funcToCall, millis) {
if (jasmine.Clock.installed.setInterval.apply) {
return jasmine.Clock.installed.setInterval.apply(this, arguments);
} else {
@@ -159,7 +159,7 @@ window.setInterval = function(funcToCall, millis) {
}
};
window.clearTimeout = function(timeoutKey) {
jasmine.getGlobal().clearTimeout = function(timeoutKey) {
if (jasmine.Clock.installed.clearTimeout.apply) {
return jasmine.Clock.installed.clearTimeout.apply(this, arguments);
} else {
@@ -167,7 +167,7 @@ window.clearTimeout = function(timeoutKey) {
}
};
window.clearInterval = function(timeoutKey) {
jasmine.getGlobal().clearInterval = function(timeoutKey) {
if (jasmine.Clock.installed.clearTimeout.apply) {
return jasmine.Clock.installed.clearInterval.apply(this, arguments);
} else {