Skip to content

Commit 6db1452

Browse files
committed
Adds ability to have an example argument to it blocks
1 parent 3511470 commit 6db1452

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

lib/rspec-steps/step-list.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def result_for(step)
5252
@results[step]
5353
end
5454

55-
def run_only_once(context_example)
55+
def run_only_once(context_example, running_example)
5656
return unless @results.nil?
5757
failed_step = nil
5858
@let_bangs.each do |let_name|
@@ -63,7 +63,7 @@ def run_only_once(context_example)
6363
[
6464
step,
6565
if failed_step.nil?
66-
result = capture_result(step, context_example)
66+
result = capture_result(step, context_example, running_example)
6767
if result.failed?
6868
failed_step = result
6969
end
@@ -75,8 +75,8 @@ def run_only_once(context_example)
7575
end ]
7676
end
7777

78-
def capture_result(step, context_example)
79-
StepResult.new(step, step.run_inside(context_example), nil, nil)
78+
def capture_result(step, context_example, running_example)
79+
StepResult.new(step, step.run_inside(context_example, running_example), nil, nil)
8080
rescue BasicObject => ex
8181
StepResult.new(step, nil, ex, nil)
8282
end

lib/rspec-steps/step.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ def initialize(*whatever)
99
def define_on(step_list, example_group)
1010
step = self
1111
example_group.it(*args, metadata) do |example|
12-
step_list.run_only_once(self)
12+
step_list.run_only_once(self, example)
1313
result = step_list.result_for(step)
1414
pending if result.is_after_failed_step?
1515
expect(result).to have_executed_successfully
1616
end
1717
end
1818

19-
def run_inside(example)
20-
example.instance_eval(&action)
19+
def run_inside(example, ex_obj)
20+
example.instance_exec(ex_obj, &action)
2121
end
2222

2323
end

spec/example_group_spec.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,19 @@ def something
8383
end
8484
end
8585

86+
it "should be able to access an example in blocks" do
87+
group = nil
88+
metadata = nil
89+
sandboxed do
90+
group = RSpec.steps "Test Steps" do
91+
it("sets @a"){|example| metadata = example.metadata }
92+
end
93+
group.run
94+
end
95+
96+
expect(metadata.respond_to?(:[])).to be_truthy
97+
end
98+
8699
it "should run each_step hooks" do
87100
group = nil
88101
afters = []

0 commit comments

Comments
 (0)