spec/cucumber/formatter/legacy_api/adapter_spec.rb in cucumber-2.0.0 vs spec/cucumber/formatter/legacy_api/adapter_spec.rb in cucumber-2.0.1

- old
+ new

@@ -40,29 +40,45 @@ NoStepMatch.new test_step.source.last, test_step.name end end + class HookWrapper + def initialize(proc) + @proc = proc + end + + def source_location + @proc.source_location + end + + def invoke(pseudo_method, arguments, &block) + @proc.call + end + end + class AddBeforeAndAfterHooks < Core::Filter.new def test_case(test_case) - steps = before_hooks(test_case.source) + + steps = before_hooks(test_case.source) + test_case.test_steps + after_hooks(test_case.source) test_case.with_steps(steps).describe_to receiver end private def before_hooks(source) # The adapter is built on the assumption that each test case will have at least one step. This is annoying # for tests, but a safe assumption for production use as we always add one hook to initialize the world. - [ Hooks.before_hook(source) {} ] + hook = proc {} + [ Hooks.before_hook(source, Hooks.location(hook), &hook) ] end def after_hooks(source) # We add an after hook to make sure the adapter can cope with it - [ Hooks.after_hook(source) {} ] + hook = proc {} + [ Hooks.after_hook(source, Hooks.location(hook), &hook) ] end end context 'message order' do let(:formatter) { MessageSpy.new } @@ -452,10 +468,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -520,10 +538,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -604,10 +624,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -633,10 +655,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -699,10 +723,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -773,10 +799,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -788,10 +816,12 @@ :after_table_cell, :after_table_row, :after_outline_table, :after_examples, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -934,10 +964,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1001,10 +1033,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1056,10 +1090,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1121,10 +1157,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1182,10 +1220,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1197,10 +1237,12 @@ :after_table_cell, :after_table_row, :after_outline_table, :after_examples, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1256,10 +1298,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1285,10 +1329,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1337,10 +1383,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1454,10 +1502,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :scenario_name, :before_step, :before_step_result, @@ -1482,11 +1532,12 @@ context 'with exception in after step hook' do class FailingAfterStepHook def find_after_step_hooks(test_case) - Runtime::StepHooks.new [-> { raise Failure }] + failing_hook = HookWrapper.new(proc { raise Failure }) + Runtime::StepHooks.new [failing_hook] end end it 'prints the exception within the step' do filters = [ @@ -1527,11 +1578,12 @@ end context 'with exception in a single before hook' do class FailingBeforeHook def apply_before_hooks(test_case) - Runtime::BeforeHooks.new([proc { raise Failure }]).apply_to(test_case) + failing_hook = HookWrapper.new(proc { raise Failure }) + Runtime::BeforeHooks.new([failing_hook], RunningTestCase.new(test_case)).apply_to(test_case) end end it 'prints the exception after the scenario name' do filters = [ @@ -1658,10 +1710,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1686,11 +1740,13 @@ context 'with exception in the first of several before hooks' do # This proves that the second before hook's result doesn't overwrite # the result of the first one. class FailingAndPassingBeforeHooks def apply_before_hooks(test_case) - Runtime::BeforeHooks.new([proc { raise Failure }, proc { }]).apply_to(test_case) + failing_hook = HookWrapper.new(proc { raise Failure }) + passing_hook = HookWrapper.new(proc {}) + Runtime::BeforeHooks.new([failing_hook, passing_hook], RunningTestCase.new(test_case)).apply_to(test_case) end end it 'prints the exception after the scenario name' do filters = [ @@ -1733,11 +1789,12 @@ context 'with exception in after hooks' do class FailingAfterHook def apply_after_hooks(test_case) - Runtime::AfterHooks.new([proc { raise Failure }]).apply_to(test_case) + failing_hook = HookWrapper.new(proc { raise Failure }) + Runtime::AfterHooks.new([failing_hook], RunningTestCase.new(test_case)).apply_to(test_case) end end it 'prints the exception after the steps' do filters = [ @@ -1812,10 +1869,12 @@ :after_step_result, :after_step, :after_steps, :before_examples_array, :before_examples, + :before_tags, + :after_tags, :examples_name, :before_outline_table, :before_table_row, :before_table_cell, :table_cell_value, @@ -1838,10 +1897,12 @@ end context 'with exception in the first of several after hooks' do class FailingThenPassingAfterHooks def apply_after_hooks(test_case) - Runtime::AfterHooks.new([proc { raise Failure }, proc {}]).apply_to(test_case) + failing_hook = HookWrapper.new(proc { raise Failure }) + passing_hook = HookWrapper.new(proc {}) + Runtime::AfterHooks.new([failing_hook, passing_hook], RunningTestCase.new(test_case)).apply_to(test_case) end end it 'prints the exception after the steps' do filters = [