much better accuracy
This commit is contained in:
parent
84a87d423c
commit
262b7a8223
@ -42,6 +42,26 @@ jasmine.Spec.prototype.fail = (e) ->
|
|||||||
})
|
})
|
||||||
@results_.addResult(expectationResult)
|
@results_.addResult(expectationResult)
|
||||||
|
|
||||||
|
jasmine.NestedResults.isValidSpecLine = (line) ->
|
||||||
|
line.match(/^\s*expect/) != null || line.match(/^\s*return\s*expect/) != null
|
||||||
|
|
||||||
|
jasmine.NestedResults.parseFunction = (func) ->
|
||||||
|
lines = []
|
||||||
|
lineCount = 0
|
||||||
|
for line in func.split("\n")
|
||||||
|
if jasmine.NestedResults.isValidSpecLine(line)
|
||||||
|
line = line.replace(/^\s*/, '').replace(/\s*$/, '').replace(/^return\s*/, '')
|
||||||
|
lines.push([line, lineCount])
|
||||||
|
lineCount += 1
|
||||||
|
lines
|
||||||
|
|
||||||
|
jasmine.NestedResults.parseAndStore = (func) ->
|
||||||
|
if !jasmine.NestedResults.ParsedFunctions[func]
|
||||||
|
jasmine.NestedResults.ParsedFunctions[func] = jasmine.NestedResults.parseFunction(func)
|
||||||
|
jasmine.NestedResults.ParsedFunctions[func]
|
||||||
|
|
||||||
|
jasmine.NestedResults.ParsedFunctions = []
|
||||||
|
|
||||||
if !jasmine.WaitsBlock.prototype._execute
|
if !jasmine.WaitsBlock.prototype._execute
|
||||||
jasmine.WaitsBlock.prototype._execute = jasmine.WaitsBlock.prototype.execute
|
jasmine.WaitsBlock.prototype._execute = jasmine.WaitsBlock.prototype.execute
|
||||||
jasmine.WaitsForBlock.prototype._execute = jasmine.WaitsForBlock.prototype.execute
|
jasmine.WaitsForBlock.prototype._execute = jasmine.WaitsForBlock.prototype.execute
|
||||||
@ -56,31 +76,14 @@ if !jasmine.WaitsBlock.prototype._execute
|
|||||||
jasmine.WaitsForBlock.prototype.execute = pauseAndRun
|
jasmine.WaitsForBlock.prototype.execute = pauseAndRun
|
||||||
|
|
||||||
jasmine.NestedResults.prototype.addResult_ = jasmine.NestedResults.prototype.addResult
|
jasmine.NestedResults.prototype.addResult_ = jasmine.NestedResults.prototype.addResult
|
||||||
|
|
||||||
jasmine.NestedResults.ParsedFunctions = []
|
|
||||||
|
|
||||||
jasmine.NestedResults.prototype.addResult = (result) ->
|
jasmine.NestedResults.prototype.addResult = (result) ->
|
||||||
result.expectations = []
|
result.expectations = []
|
||||||
# always three up?
|
# always three up?
|
||||||
lineCount = 0
|
|
||||||
|
|
||||||
functionSignature = arguments.callee.caller.caller.caller.toString()
|
result.expectations = jasmine.NestedResults.parseAndStore(arguments.callee.caller.caller.caller.toString())
|
||||||
if !jasmine.NestedResults.ParsedFunctions[functionSignature]
|
|
||||||
lines = []
|
|
||||||
for line in functionSignature.split("\n")
|
|
||||||
if line.match(/^\s*expect/)
|
|
||||||
line = line.replace(/^\s*/, '').replace(/\s*$/, '')
|
|
||||||
lines.push(line)
|
|
||||||
lineCount += 1
|
|
||||||
jasmine.NestedResults.ParsedFunctions[functionSignature] = lines
|
|
||||||
result.expectations = jasmine.NestedResults.ParsedFunctions[functionSignature]
|
|
||||||
|
|
||||||
this.addResult_(result)
|
this.addResult_(result)
|
||||||
|
|
||||||
|
|
||||||
jasmine.ExpectationResult.prototype.line = ->
|
|
||||||
if @expectations && @lineNumber then @expectations[@lineNumber] else ''
|
|
||||||
|
|
||||||
# Try to get the line number of a failed spec
|
# Try to get the line number of a failed spec
|
||||||
class window.HeadlessReporterResult
|
class window.HeadlessReporterResult
|
||||||
constructor: (@name, @splitName) ->
|
constructor: (@name, @splitName) ->
|
||||||
@ -96,7 +99,7 @@ class window.HeadlessReporterResult
|
|||||||
for result in @results
|
for result in @results
|
||||||
output = result.message
|
output = result.message
|
||||||
if result.lineNumber
|
if result.lineNumber
|
||||||
output += " (line ~#{bestChoice.lineNumber + result.lineNumber})\n #{result.line()}"
|
output += " (line ~#{bestChoice.lineNumber + result.lineNumber})\n #{result.line}"
|
||||||
JHW.printResult(output)
|
JHW.printResult(output)
|
||||||
@findSpecLine: (splitName) ->
|
@findSpecLine: (splitName) ->
|
||||||
bestChoice = { accuracy: 0, file: null, lineNumber: null }
|
bestChoice = { accuracy: 0, file: null, lineNumber: null }
|
||||||
@ -155,7 +158,7 @@ class jasmine.HeadlessReporter
|
|||||||
for result in results.getItems()
|
for result in results.getItems()
|
||||||
if result.type == 'expect' and !result.passed_
|
if result.type == 'expect' and !result.passed_
|
||||||
if foundLine = result.expectations[testCount - 1]
|
if foundLine = result.expectations[testCount - 1]
|
||||||
result.lineNumber = testCount - 1
|
[ result.line, result.lineNumber ] = foundLine
|
||||||
failureResult.addResult(result)
|
failureResult.addResult(result)
|
||||||
testCount += 1
|
testCount += 1
|
||||||
@results.push(failureResult)
|
@results.push(failureResult)
|
||||||
|
@ -48,6 +48,31 @@
|
|||||||
});
|
});
|
||||||
return this.results_.addResult(expectationResult);
|
return this.results_.addResult(expectationResult);
|
||||||
};
|
};
|
||||||
|
jasmine.NestedResults.isValidSpecLine = function(line) {
|
||||||
|
return line.match(/^\s*expect/) !== null || line.match(/^\s*return\s*expect/) !== null;
|
||||||
|
};
|
||||||
|
jasmine.NestedResults.parseFunction = function(func) {
|
||||||
|
var line, lineCount, lines, _i, _len, _ref;
|
||||||
|
lines = [];
|
||||||
|
lineCount = 0;
|
||||||
|
_ref = func.split("\n");
|
||||||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
|
line = _ref[_i];
|
||||||
|
if (jasmine.NestedResults.isValidSpecLine(line)) {
|
||||||
|
line = line.replace(/^\s*/, '').replace(/\s*$/, '').replace(/^return\s*/, '');
|
||||||
|
lines.push([line, lineCount]);
|
||||||
|
}
|
||||||
|
lineCount += 1;
|
||||||
|
}
|
||||||
|
return lines;
|
||||||
|
};
|
||||||
|
jasmine.NestedResults.parseAndStore = function(func) {
|
||||||
|
if (!jasmine.NestedResults.ParsedFunctions[func]) {
|
||||||
|
jasmine.NestedResults.ParsedFunctions[func] = jasmine.NestedResults.parseFunction(func);
|
||||||
|
}
|
||||||
|
return jasmine.NestedResults.ParsedFunctions[func];
|
||||||
|
};
|
||||||
|
jasmine.NestedResults.ParsedFunctions = [];
|
||||||
if (!jasmine.WaitsBlock.prototype._execute) {
|
if (!jasmine.WaitsBlock.prototype._execute) {
|
||||||
jasmine.WaitsBlock.prototype._execute = jasmine.WaitsBlock.prototype.execute;
|
jasmine.WaitsBlock.prototype._execute = jasmine.WaitsBlock.prototype.execute;
|
||||||
jasmine.WaitsForBlock.prototype._execute = jasmine.WaitsForBlock.prototype.execute;
|
jasmine.WaitsForBlock.prototype._execute = jasmine.WaitsForBlock.prototype.execute;
|
||||||
@ -61,35 +86,11 @@
|
|||||||
jasmine.WaitsBlock.prototype.execute = pauseAndRun;
|
jasmine.WaitsBlock.prototype.execute = pauseAndRun;
|
||||||
jasmine.WaitsForBlock.prototype.execute = pauseAndRun;
|
jasmine.WaitsForBlock.prototype.execute = pauseAndRun;
|
||||||
jasmine.NestedResults.prototype.addResult_ = jasmine.NestedResults.prototype.addResult;
|
jasmine.NestedResults.prototype.addResult_ = jasmine.NestedResults.prototype.addResult;
|
||||||
jasmine.NestedResults.ParsedFunctions = [];
|
|
||||||
jasmine.NestedResults.prototype.addResult = function(result) {
|
jasmine.NestedResults.prototype.addResult = function(result) {
|
||||||
var functionSignature, line, lineCount, lines, _i, _len, _ref;
|
|
||||||
result.expectations = [];
|
result.expectations = [];
|
||||||
lineCount = 0;
|
result.expectations = jasmine.NestedResults.parseAndStore(arguments.callee.caller.caller.caller.toString());
|
||||||
functionSignature = arguments.callee.caller.caller.caller.toString();
|
|
||||||
if (!jasmine.NestedResults.ParsedFunctions[functionSignature]) {
|
|
||||||
lines = [];
|
|
||||||
_ref = functionSignature.split("\n");
|
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
|
||||||
line = _ref[_i];
|
|
||||||
if (line.match(/^\s*expect/)) {
|
|
||||||
line = line.replace(/^\s*/, '').replace(/\s*$/, '');
|
|
||||||
lines.push(line);
|
|
||||||
}
|
|
||||||
lineCount += 1;
|
|
||||||
}
|
|
||||||
jasmine.NestedResults.ParsedFunctions[functionSignature] = lines;
|
|
||||||
}
|
|
||||||
result.expectations = jasmine.NestedResults.ParsedFunctions[functionSignature];
|
|
||||||
return this.addResult_(result);
|
return this.addResult_(result);
|
||||||
};
|
};
|
||||||
jasmine.ExpectationResult.prototype.line = function() {
|
|
||||||
if (this.expectations && this.lineNumber) {
|
|
||||||
return this.expectations[this.lineNumber];
|
|
||||||
} else {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
window.HeadlessReporterResult = (function() {
|
window.HeadlessReporterResult = (function() {
|
||||||
function HeadlessReporterResult(name, splitName) {
|
function HeadlessReporterResult(name, splitName) {
|
||||||
@ -114,7 +115,7 @@
|
|||||||
result = _ref[_i];
|
result = _ref[_i];
|
||||||
output = result.message;
|
output = result.message;
|
||||||
if (result.lineNumber) {
|
if (result.lineNumber) {
|
||||||
output += " (line ~" + (bestChoice.lineNumber + result.lineNumber) + ")\n " + (result.line());
|
output += " (line ~" + (bestChoice.lineNumber + result.lineNumber) + ")\n " + result.line;
|
||||||
}
|
}
|
||||||
_results.push(JHW.printResult(output));
|
_results.push(JHW.printResult(output));
|
||||||
}
|
}
|
||||||
@ -204,7 +205,7 @@
|
|||||||
result = _ref[_i];
|
result = _ref[_i];
|
||||||
if (result.type === 'expect' && !result.passed_) {
|
if (result.type === 'expect' && !result.passed_) {
|
||||||
if (foundLine = result.expectations[testCount - 1]) {
|
if (foundLine = result.expectations[testCount - 1]) {
|
||||||
result.lineNumber = testCount - 1;
|
result.line = foundLine[0], result.lineNumber = foundLine[1];
|
||||||
}
|
}
|
||||||
failureResult.addResult(result);
|
failureResult.addResult(result);
|
||||||
}
|
}
|
||||||
|
@ -94,3 +94,22 @@ describe 'jasmine.WaitsBlock and jasmine.WaitsForBlock', ->
|
|||||||
runs ->
|
runs ->
|
||||||
expect(true).toEqual(true)
|
expect(true).toEqual(true)
|
||||||
|
|
||||||
|
describe 'jasmine.NestedResults.isValidSpecLine', ->
|
||||||
|
it 'should check the lines', ->
|
||||||
|
expect(jasmine.NestedResults.isValidSpecLine('yes')).toEqual(false)
|
||||||
|
expect(jasmine.NestedResults.isValidSpecLine('expect')).toEqual(true)
|
||||||
|
expect(jasmine.NestedResults.isValidSpecLine(' expect')).toEqual(true)
|
||||||
|
expect(jasmine.NestedResults.isValidSpecLine('return expect')).toEqual(true)
|
||||||
|
expect(jasmine.NestedResults.isValidSpecLine(' return expect')).toEqual(true)
|
||||||
|
|
||||||
|
describe 'jasmine.nestedResults.parseFunction', ->
|
||||||
|
it 'should parse the function', ->
|
||||||
|
expect(jasmine.NestedResults.parseFunction("""
|
||||||
|
test
|
||||||
|
expect("cat")
|
||||||
|
return expect("dog")
|
||||||
|
""")).toEqual([
|
||||||
|
[ 'expect("cat")', 1 ],
|
||||||
|
[ 'expect("dog")', 2 ]
|
||||||
|
])
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user