Telegram Web, preconfigured for usage in I2P. http://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
4.0 KiB

11 years ago
(function(window) {
var formatFailedStep = function(step) {
var stack = step.trace.stack;
var message = step.message;
if (stack) {
// remove the trailing dot
var firstLine = stack.substring(0, stack.indexOf('\n') - 1);
if (message && message.indexOf(firstLine) === -1) {
stack = message + '\n' + stack;
}
// remove jasmine stack entries
return stack.replace(/\n.+jasmine\.js\?\d*\:.+(?=(\n|$))/g, '');
}
return message;
};
var indexOf = function(collection, item) {
if (collection.indexOf) {
return collection.indexOf(item);
}
for (var i = 0, ii = collection.length; i < ii; i++) {
if (collection[i] === item) {
return i;
}
}
return -1;
};
// TODO(vojta): Karma might provide this
var getCurrentTransport = function() {
// probably running in debug.html (there's no socket.io)
if (!window.parent.io) {
return null;
}
var location = window.parent.location;
return window.parent.io.sockets[location.protocol + '//' + location.host].transport.name;
};
/**
* Very simple reporter for jasmine
*/
var KarmaReporter = function(tc) {
var getAllSpecNames = function(topLevelSuites) {
var specNames = {};
var processSuite = function(suite, pointer) {
var childSuite;
var childPointer;
for (var i = 0; i < suite.suites_.length; i++) {
childSuite = suite.suites_[i];
childPointer = pointer[childSuite.description] = {};
processSuite(childSuite, childPointer);
}
pointer._ = [];
for (var j = 0; j < suite.specs_.length; j++) {
pointer._.push(suite.specs_[j].description);
}
};
var suite;
var pointer;
for (var k = 0; k < topLevelSuites.length; k++) {
suite = topLevelSuites[k];
pointer = specNames[suite.description] = {};
processSuite(suite, pointer);
}
return specNames;
};
this.reportRunnerStarting = function(runner) {
var transport = getCurrentTransport();
var specNames = null;
// This structure can be pretty huge and it blows up socke.io connection, when polling.
// https://github.com/LearnBoost/socket.io-client/issues/569
if (transport === 'websocket' || transport === 'flashsocket') {
specNames = getAllSpecNames(runner.topLevelSuites());
}
tc.info({total: runner.specs().length, specs: specNames});
};
this.reportRunnerResults = function(runner) {
tc.complete({
coverage: window.__coverage__
});
};
this.reportSuiteResults = function(suite) {
// memory clean up
suite.after_ = null;
suite.before_ = null;
suite.queue = null;
};
this.reportSpecStarting = function(spec) {
spec.results_.time = new Date().getTime();
};
this.reportSpecResults = function(spec) {
var result = {
id: spec.id,
description: spec.description,
suite: [],
success: spec.results_.failedCount === 0,
skipped: spec.results_.skipped,
time: spec.results_.skipped ? 0 : new Date().getTime() - spec.results_.time,
log: []
};
var suitePointer = spec.suite;
while (suitePointer) {
result.suite.unshift(suitePointer.description);
suitePointer = suitePointer.parentSuite;
}
if (!result.success) {
var steps = spec.results_.items_;
for (var i = 0; i < steps.length; i++) {
if (!steps[i].passed_) {
result.log.push(formatFailedStep(steps[i]));
}
}
}
tc.result(result);
// memory clean up
spec.results_ = null;
spec.spies_ = null;
spec.queue = null;
};
this.log = function() {};
};
var createStartFn = function(tc, jasmineEnvPassedIn) {
return function(config) {
// we pass jasmineEnv during testing
// in production we ask for it lazily, so that adapter can be loaded even before jasmine
var jasmineEnv = jasmineEnvPassedIn || window.jasmine.getEnv();
jasmineEnv.addReporter(new KarmaReporter(tc));
jasmineEnv.execute();
};
};
window.__karma__.start = createStartFn(window.__karma__);
})(window);