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 = [