jasmine-headless-webkit/vendor/assets/javascripts/jasmine.HeadlessConsoleReporter.js

133 lines
4.7 KiB
JavaScript
Raw Normal View History

(function() {
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
2011-10-27 00:05:05 +00:00
if (!(typeof jasmine !== "undefined" && jasmine !== null)) {
throw new Error("jasmine not loaded!");
}
jasmine.HeadlessConsoleReporter = (function() {
function HeadlessConsoleReporter(callback) {
this.callback = callback != null ? callback : null;
this.results = [];
this.failedCount = 0;
this.length = 0;
this.timer = null;
this.position = 0;
this.positions = "|/-\\";
2011-10-27 00:05:05 +00:00
}
HeadlessConsoleReporter.prototype.reportRunnerResults = function(runner) {
var output, result, resultLine, runtime, _i, _len, _ref;
if (this.hasError()) {
return;
}
2011-10-27 00:05:05 +00:00
runtime = (new Date() - this.startTime) / 1000.0;
JHW.stdout.print("\n");
resultLine = this._formatResultLine(runtime);
if (this.failedCount === 0) {
JHW.stdout.puts(("PASS: " + resultLine).foreground('green'));
} else {
JHW.stdout.puts(("FAIL: " + resultLine).foreground('red'));
2011-11-05 18:19:41 +00:00
JHW.hasSpecFailure();
2011-10-27 00:05:05 +00:00
}
output = "TOTAL||" + this.length + "||" + this.failedCount + "||" + runtime + "||" + (JHW._hasErrors ? "T" : "F");
JHW.report.puts(output);
_ref = this.results;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
result = _ref[_i];
result.print();
}
if (window.JHW) {
window.onbeforeunload = null;
}
2011-10-27 00:05:05 +00:00
return JHW.finishSuite();
};
HeadlessConsoleReporter.prototype.reportRunnerStarting = function(runner) {
this.startTime = new Date();
if (!this.hasError()) {
return JHW.stdout.puts("\nRunning Jasmine specs...".bright());
}
2011-10-27 00:05:05 +00:00
};
HeadlessConsoleReporter.prototype.reportSpecResults = function(spec) {
var failureResult, foundLine, result, results, testCount, _i, _len, _ref;
if (this.hasError()) {
return;
}
JHW.ping();
2011-10-27 00:05:05 +00:00
results = spec.results();
this.length++;
if (results.passed()) {
JHW.stdout.print('.'.foreground('green'));
return JHW.report.puts("PASS||" + spec.getJHWSpecInformation());
} else {
JHW.stdout.print('F'.foreground('red'));
JHW.report.puts("FAIL||" + spec.getJHWSpecInformation());
this.failedCount++;
failureResult = new HeadlessReporterResult(spec.getFullName(), spec.getSpecSplitName());
testCount = 1;
_ref = results.getItems();
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
result = _ref[_i];
if (result.type === 'expect' && !result.passed_) {
if (foundLine = result.expectations[testCount - 1]) {
result.line = foundLine[0], result.lineNumber = foundLine[1];
}
failureResult.addResult(result);
}
testCount += 1;
}
return this.results.push(failureResult);
}
};
HeadlessConsoleReporter.prototype.reportSpecStarting = function(spec) {
if (this.hasError()) {
spec.finish();
return spec.suite.finish();
}
};
HeadlessConsoleReporter.prototype.reportSpecWaiting = function() {
var first, runner;
runner = null;
if (!this.timer) {
this.timer = true;
first = true;
runner = __bind(function() {
return this.timer = setTimeout(__bind(function() {
if (this.timer) {
if (!first) {
JHW.stdout.print(Intense.moveBack());
}
JHW.stdout.print(this.positions.substr(this.position, 1).foreground('yellow'));
this.position += 1;
this.position %= this.positions.length;
first = false;
return runner();
}
}, this), 750);
}, this);
return runner();
}
};
HeadlessConsoleReporter.prototype.reportSpecRunning = function() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
return JHW.stdout.print(Intense.moveBack());
}
};
2011-10-27 00:05:05 +00:00
HeadlessConsoleReporter.prototype.reportSuiteResults = function(suite) {};
HeadlessConsoleReporter.prototype.hasError = function() {
return JHW._hasErrors;
};
HeadlessConsoleReporter.prototype._formatResultLine = function(runtime) {
var line;
line = [];
line.push(this.length);
line.push((this.length === 1 ? "test" : "tests") + ',');
line.push(this.failedCount);
line.push((this.failedCount === 1 ? "failure" : "failures") + ',');
line.push(runtime);
line.push((runtime === 1.0 ? "sec" : "secs") + '.');
return line.join(' ');
};
return HeadlessConsoleReporter;
})();
}).call(this);