App-MFILE-WWW
view release on metacpan or search on metacpan
share/js/core/qunit.js view on Meta::CPAN
for (i = notStartedModules.length - 1; i >= 0; i--) {
startModule = notStartedModules[i];
startModule.stats = { all: 0, bad: 0, started: now() };
emit("suiteStart", startModule.suiteReport.start(true));
runLoggingCallbacks("moduleStart", {
name: startModule.name,
tests: startModule.tests
});
}
config.current = this;
this.testEnvironment = extend({}, module.testEnvironment);
this.started = now();
emit("testStart", this.testReport.start(true));
runLoggingCallbacks("testStart", {
name: this.testName,
module: module.name,
testId: this.testId,
previousFailure: this.previousFailure
});
if (!config.pollution) {
saveGlobal();
}
},
run: function run() {
var promise;
config.current = this;
this.callbackStarted = now();
if (config.notrycatch) {
runTest(this);
return;
}
try {
runTest(this);
} catch (e) {
this.pushFailure("Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + (e.message || e), extractStacktrace(e, 0));
// Else next test will carry the responsibility
saveGlobal();
// Restart the tests if they're blocking
if (config.blocking) {
internalRecover(this);
}
}
function runTest(test) {
promise = test.callback.call(test.testEnvironment, test.assert);
test.resolvePromise(promise);
// If the test has a "lock" on it, but the timeout is 0, then we push a
// failure as the test should be synchronous.
if (test.timeout === 0 && test.semaphore !== 0) {
pushFailure("Test did not finish synchronously even though assert.timeout( 0 ) was used.", sourceFromStacktrace(2));
}
}
},
after: function after() {
checkPollution();
},
queueHook: function queueHook(hook, hookName, hookOwner) {
var _this = this;
var callHook = function callHook() {
var promise = hook.call(_this.testEnvironment, _this.assert);
_this.resolvePromise(promise, hookName);
};
var runHook = function runHook() {
if (hookName === "before") {
if (hookOwner.unskippedTestsRun !== 0) {
return;
}
_this.preserveEnvironment = true;
}
if (hookName === "after" && hookOwner.unskippedTestsRun !== numberOfUnskippedTests(hookOwner) - 1 && config.queue.length > 2) {
return;
}
config.current = _this;
if (config.notrycatch) {
callHook();
return;
}
try {
callHook();
} catch (error) {
_this.pushFailure(hookName + " failed on " + _this.testName + ": " + (error.message || error), extractStacktrace(error, 0));
}
};
return runHook;
},
// Currently only used for module level hooks, can be used to add global level ones
hooks: function hooks(handler) {
var hooks = [];
function processHooks(test, module) {
if (module.parentModule) {
processHooks(test, module.parentModule);
}
if (module.hooks[handler].length) {
for (var i = 0; i < module.hooks[handler].length; i++) {
hooks.push(test.queueHook(module.hooks[handler][i], handler, module));
}
}
}
( run in 1.603 second using v1.01-cache-2.11-cpan-39bf76dae61 )