2011-05-12 21:02:11 +00:00
|
|
|
(function() {
|
|
|
|
if (!(typeof jasmine !== "undefined" && jasmine !== null)) {
|
2011-06-13 12:14:24 +00:00
|
|
|
throw new Error("jasmine not laoded!");
|
2011-05-12 21:02:11 +00:00
|
|
|
}
|
2011-07-14 14:54:44 +00:00
|
|
|
window.HeadlessReporterResult = (function() {
|
2011-07-13 18:42:47 +00:00
|
|
|
function HeadlessReporterResult(name, splitName) {
|
2011-05-12 21:02:11 +00:00
|
|
|
this.name = name;
|
2011-07-13 18:42:47 +00:00
|
|
|
this.splitName = splitName;
|
2011-05-12 21:02:11 +00:00
|
|
|
this.results = [];
|
|
|
|
}
|
2011-05-12 22:47:56 +00:00
|
|
|
HeadlessReporterResult.prototype.addResult = function(message) {
|
|
|
|
return this.results.push(message);
|
|
|
|
};
|
2011-05-12 21:02:11 +00:00
|
|
|
HeadlessReporterResult.prototype.print = function() {
|
2011-07-13 18:42:47 +00:00
|
|
|
var bestChoice, output, result, _i, _len, _ref, _results;
|
|
|
|
output = this.name;
|
|
|
|
bestChoice = this._findSpecLine();
|
|
|
|
if (bestChoice.file) {
|
|
|
|
output += " (" + bestChoice.file + ":" + bestChoice.lineNumber + ")";
|
|
|
|
}
|
|
|
|
JHW.printName(output);
|
2011-05-12 21:02:11 +00:00
|
|
|
_ref = this.results;
|
|
|
|
_results = [];
|
|
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
|
|
result = _ref[_i];
|
2011-07-22 13:40:40 +00:00
|
|
|
_results.push(JHW.printResult(result));
|
2011-05-12 21:02:11 +00:00
|
|
|
}
|
|
|
|
return _results;
|
|
|
|
};
|
2011-07-13 18:42:47 +00:00
|
|
|
HeadlessReporterResult.prototype._findSpecLine = function() {
|
2011-07-14 14:54:44 +00:00
|
|
|
var bestChoice, file, index, lastLine, line, lineNumber, lines, newLineNumberInfo, _i, _len, _ref;
|
2011-07-13 18:42:47 +00:00
|
|
|
bestChoice = {
|
|
|
|
accuracy: 0,
|
|
|
|
file: null,
|
|
|
|
lineNumber: null
|
|
|
|
};
|
2011-07-14 14:54:44 +00:00
|
|
|
_ref = HeadlessReporterResult.specLineNumbers;
|
|
|
|
for (file in _ref) {
|
|
|
|
lines = _ref[file];
|
2011-07-13 18:42:47 +00:00
|
|
|
index = 0;
|
2011-07-14 14:54:44 +00:00
|
|
|
lineNumber = 0;
|
|
|
|
while (newLineNumberInfo = lines[this.splitName[index]]) {
|
|
|
|
if (newLineNumberInfo.length === 0) {
|
|
|
|
lineNumber = newLineNumberInfo[0];
|
|
|
|
} else {
|
|
|
|
lastLine = null;
|
|
|
|
for (_i = 0, _len = newLineNumberInfo.length; _i < _len; _i++) {
|
|
|
|
line = newLineNumberInfo[_i];
|
|
|
|
lastLine = line;
|
|
|
|
if (line > lineNumber) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
lineNumber = lastLine;
|
|
|
|
}
|
2011-07-13 18:42:47 +00:00
|
|
|
index++;
|
|
|
|
}
|
|
|
|
if (index > bestChoice.accuracy) {
|
|
|
|
bestChoice = {
|
|
|
|
accuracy: index,
|
|
|
|
file: file,
|
|
|
|
lineNumber: lineNumber
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return bestChoice;
|
|
|
|
};
|
2011-05-12 21:02:11 +00:00
|
|
|
return HeadlessReporterResult;
|
|
|
|
})();
|
2011-07-13 18:42:47 +00:00
|
|
|
jasmine.Suite.prototype.getSuiteSplitName = function() {
|
|
|
|
var parts;
|
|
|
|
parts = this.parentSuite ? this.parentSuite.getSuiteSplitName() : [];
|
|
|
|
parts.push(this.description);
|
|
|
|
return parts;
|
|
|
|
};
|
|
|
|
jasmine.Spec.prototype.getSpecSplitName = function() {
|
|
|
|
var parts;
|
|
|
|
parts = this.suite.getSuiteSplitName();
|
|
|
|
parts.push(this.description);
|
|
|
|
return parts;
|
|
|
|
};
|
2011-05-12 21:02:11 +00:00
|
|
|
jasmine.HeadlessReporter = (function() {
|
2011-07-22 11:42:25 +00:00
|
|
|
function HeadlessReporter(callback) {
|
|
|
|
this.callback = callback != null ? callback : null;
|
2011-05-12 21:02:11 +00:00
|
|
|
this.results = [];
|
|
|
|
this.failedCount = 0;
|
|
|
|
this.length = 0;
|
|
|
|
}
|
|
|
|
HeadlessReporter.prototype.reportRunnerResults = function(runner) {
|
2011-07-22 13:40:40 +00:00
|
|
|
var result, _i, _len, _ref;
|
2011-08-07 18:45:57 +00:00
|
|
|
if (this.hasError()) {
|
|
|
|
return;
|
|
|
|
}
|
2011-05-12 21:02:11 +00:00
|
|
|
_ref = this.results;
|
|
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
|
|
result = _ref[_i];
|
2011-07-22 13:40:40 +00:00
|
|
|
result.print();
|
2011-05-12 21:02:11 +00:00
|
|
|
}
|
2011-07-22 11:42:25 +00:00
|
|
|
if (this.callback) {
|
|
|
|
this.callback();
|
|
|
|
}
|
2011-05-12 22:47:56 +00:00
|
|
|
return JHW.finishSuite((new Date() - this.startTime) / 1000.0, this.length, this.failedCount);
|
|
|
|
};
|
|
|
|
HeadlessReporter.prototype.reportRunnerStarting = function(runner) {
|
|
|
|
return this.startTime = new Date();
|
2011-05-12 21:02:11 +00:00
|
|
|
};
|
|
|
|
HeadlessReporter.prototype.reportSpecResults = function(spec) {
|
2011-07-22 13:40:40 +00:00
|
|
|
var failureResult, result, results, _i, _len, _ref;
|
2011-08-07 18:45:57 +00:00
|
|
|
if (this.hasError()) {
|
|
|
|
return;
|
|
|
|
}
|
2011-05-16 02:42:02 +00:00
|
|
|
results = spec.results();
|
2011-06-08 17:47:51 +00:00
|
|
|
this.length++;
|
2011-05-16 02:42:02 +00:00
|
|
|
if (results.passed()) {
|
2011-05-12 21:02:11 +00:00
|
|
|
return JHW.specPassed();
|
|
|
|
} else {
|
2011-07-13 18:42:47 +00:00
|
|
|
JHW.specFailed(spec.getSpecSplitName().join('||'));
|
2011-06-08 17:47:51 +00:00
|
|
|
this.failedCount++;
|
2011-07-13 18:42:47 +00:00
|
|
|
failureResult = new HeadlessReporterResult(spec.getFullName(), spec.getSpecSplitName());
|
2011-05-16 02:42:02 +00:00
|
|
|
_ref = results.getItems();
|
2011-05-12 21:02:11 +00:00
|
|
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
|
|
result = _ref[_i];
|
2011-07-22 13:40:40 +00:00
|
|
|
if (result.type === 'expect' && !result.passed_) {
|
|
|
|
failureResult.addResult(result.message);
|
|
|
|
}
|
2011-05-12 21:02:11 +00:00
|
|
|
}
|
|
|
|
return this.results.push(failureResult);
|
|
|
|
}
|
|
|
|
};
|
2011-08-07 18:45:57 +00:00
|
|
|
HeadlessReporter.prototype.reportSpecStarting = function(spec) {
|
|
|
|
if (this.hasError()) {
|
|
|
|
spec.finish();
|
|
|
|
return spec.suite.finish();
|
|
|
|
}
|
|
|
|
};
|
2011-06-08 17:46:08 +00:00
|
|
|
HeadlessReporter.prototype.reportSuiteResults = function(suite) {};
|
2011-08-07 18:45:57 +00:00
|
|
|
HeadlessReporter.prototype.hasError = function() {
|
|
|
|
return JHW.hasError();
|
|
|
|
};
|
2011-05-12 21:02:11 +00:00
|
|
|
return HeadlessReporter;
|
|
|
|
})();
|
|
|
|
}).call(this);
|