webogram-i2p/node_modules/karma/lib/executor.js
2014-01-05 20:07:11 +04:00

57 lines
1.4 KiB
JavaScript

var log = require('./logger').create();
var Executor = function(capturedBrowsers, config, emitter) {
var self = this;
var executionScheduled = false;
var pendingCount = 0;
var runningBrowsers;
var schedule = function() {
var nonReady = [];
if (!capturedBrowsers.length) {
log.warn('No captured browser, open http://%s:%s%s', config.hostname, config.port,
config.urlRoot);
return false;
}
if (capturedBrowsers.areAllReady(nonReady)) {
log.debug('All browsers are ready, executing');
executionScheduled = false;
capturedBrowsers.clearResults();
capturedBrowsers.setAllToExecuting();
pendingCount = capturedBrowsers.length;
runningBrowsers = capturedBrowsers.clone();
emitter.emit('run_start', runningBrowsers);
self.socketIoSockets.emit('execute', config.client);
return true;
}
log.info('Delaying execution, these browsers are not ready: ' + nonReady.join(', '));
executionScheduled = true;
return false;
};
this.schedule = schedule;
this.onRunComplete = function() {
if (executionScheduled) {
schedule();
}
};
this.onBrowserComplete = function() {
pendingCount--;
if (!pendingCount) {
emitter.emit('run_complete', runningBrowsers, runningBrowsers.getResults());
}
};
// bind all the events
emitter.bind(this);
};
module.exports = Executor;