ensure after hooks run even if something fails
This commit is contained in:
parent
01f2b2a0e3
commit
c866247e85
@ -15,11 +15,17 @@ class jasmine.GWT.Scenario extends jasmine.GWT.Background
|
|||||||
if position == 'last'
|
if position == 'last'
|
||||||
jasmine.Spec.prototype.removeAllSpies.apply(context)
|
jasmine.Spec.prototype.removeAllSpies.apply(context)
|
||||||
|
|
||||||
|
exception = null
|
||||||
|
|
||||||
|
try
|
||||||
param.apply(context, args)
|
param.apply(context, args)
|
||||||
|
catch exception
|
||||||
|
|
||||||
if position == 'last'
|
if position == 'last'
|
||||||
jasmine.GWT.runHook('After', context)
|
jasmine.GWT.runHook('After', context)
|
||||||
|
|
||||||
|
throw(exception) if exception
|
||||||
|
|
||||||
@runFailure: (type, name, args) ->
|
@runFailure: (type, name, args) ->
|
||||||
it "#{type} #{name}", ->
|
it "#{type} #{name}", ->
|
||||||
output = [ "", "No step defined for #{type} #{name}. Define one using the following:", '' ]
|
output = [ "", "No step defined for #{type} #{name}. Define one using the following:", '' ]
|
||||||
@ -79,18 +85,22 @@ class jasmine.GWT.Scenario extends jasmine.GWT.Background
|
|||||||
|
|
||||||
position = 'first'
|
position = 'first'
|
||||||
|
|
||||||
|
calcPosition = (index) ->
|
||||||
|
if (index + 2) == _statements.length then 'last' else 'middle'
|
||||||
|
|
||||||
for index in [ 0..._statements.length ]
|
for index in [ 0..._statements.length ]
|
||||||
[ type, name, param ] = _statements[index]
|
[ type, name, param ] = _statements[index]
|
||||||
[ _this._type, _this._name ] = [ type, name ]
|
[ _this._type, _this._name ] = [ type, name ]
|
||||||
|
|
||||||
args = []
|
args = []
|
||||||
|
|
||||||
codeRunner = (thing, args = []) ->
|
codeRunner = (thing, pos, args = []) ->
|
||||||
jasmine.GWT.Scenario.runCode(type, name, thing, position, _this, args)
|
jasmine.GWT.Scenario.runCode(type, name, thing, pos, _this, args)
|
||||||
|
|
||||||
if param?
|
if param?
|
||||||
if typeof param == "function"
|
if typeof param == "function"
|
||||||
codeRunner(param)
|
codeRunner(param, position)
|
||||||
|
position = calcPosition(index)
|
||||||
|
|
||||||
continue
|
continue
|
||||||
else
|
else
|
||||||
@ -100,14 +110,14 @@ class jasmine.GWT.Scenario extends jasmine.GWT.Background
|
|||||||
|
|
||||||
for [ match, code ] in (jasmine.GWT.Steps[type] || [])
|
for [ match, code ] in (jasmine.GWT.Steps[type] || [])
|
||||||
if result = name.match(match)
|
if result = name.match(match)
|
||||||
codeRunner(code, result[1..-1].concat(args))
|
codeRunner(code, position, result[1..-1].concat(args))
|
||||||
found = true
|
found = true
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
jasmine.GWT.Scenario.runFailure(type, name, args) if !found
|
jasmine.GWT.Scenario.runFailure(type, name, args) if !found
|
||||||
|
|
||||||
position = (if (index + 2) == _statements.length then 'last' else 'middle')
|
position = calcPosition(index)
|
||||||
|
|
||||||
jasmine.GWT.currentScenario_ = null
|
jasmine.GWT.currentScenario_ = null
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user