cucumber 2.0.0.beta.5 → 2.0.0.rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.md +20 -1
- data/Rakefile +0 -2
- data/cucumber.gemspec +1 -1
- data/features/docs/defining_steps/skip_scenario.feature +31 -2
- data/lib/cucumber.rb +6 -0
- data/lib/cucumber/ast/facade.rb +117 -0
- data/lib/cucumber/cli/configuration.rb +1 -1
- data/lib/cucumber/cli/profile_loader.rb +1 -1
- data/lib/cucumber/file_specs.rb +1 -1
- data/lib/cucumber/filters.rb +9 -0
- data/lib/cucumber/filters/activate_steps.rb +34 -0
- data/lib/cucumber/filters/apply_after_hooks.rb +9 -0
- data/lib/cucumber/filters/apply_after_step_hooks.rb +12 -0
- data/lib/cucumber/filters/apply_around_hooks.rb +12 -0
- data/lib/cucumber/filters/apply_before_hooks.rb +9 -0
- data/lib/cucumber/filters/prepare_world.rb +37 -0
- data/lib/cucumber/filters/quit.rb +5 -1
- data/lib/cucumber/filters/randomizer.rb +5 -1
- data/lib/cucumber/filters/tag_limits.rb +7 -2
- data/lib/cucumber/formatter/ansicolor.rb +0 -8
- data/lib/cucumber/formatter/html.rb +6 -1
- data/lib/cucumber/formatter/legacy_api/adapter.rb +17 -1
- data/lib/cucumber/formatter/legacy_api/ast.rb +6 -1
- data/lib/cucumber/hooks.rb +97 -0
- data/lib/cucumber/platform.rb +2 -3
- data/lib/cucumber/rb_support/rb_hook.rb +2 -2
- data/lib/cucumber/runtime.rb +18 -15
- data/lib/cucumber/runtime/after_hooks.rb +24 -0
- data/lib/cucumber/runtime/before_hooks.rb +23 -0
- data/lib/cucumber/runtime/step_hooks.rb +22 -0
- data/lib/cucumber/runtime/support_code.rb +56 -1
- data/lib/cucumber/step_match.rb +26 -2
- data/spec/cucumber/cli/configuration_spec.rb +16 -1
- data/spec/cucumber/cli/profile_loader_spec.rb +10 -0
- data/spec/cucumber/file_specs_spec.rb +10 -2
- data/spec/cucumber/filters/activate_steps_spec.rb +57 -0
- data/spec/cucumber/formatter/debug_spec.rb +0 -14
- data/spec/cucumber/formatter/html_spec.rb +29 -0
- data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +210 -110
- data/spec/cucumber/formatter/pretty_spec.rb +0 -2
- data/spec/cucumber/formatter/rerun_spec.rb +17 -16
- data/spec/cucumber/formatter/spec_helper.rb +11 -6
- data/spec/cucumber/hooks_spec.rb +30 -0
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +11 -4
- metadata +22 -16
- data/gem_tasks/yard.rake +0 -43
- data/gem_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
- data/gem_tasks/yard/default/layout/html/footer.erb +0 -5
- data/gem_tasks/yard/default/layout/html/index.erb +0 -1
- data/gem_tasks/yard/default/layout/html/layout.erb +0 -25
- data/gem_tasks/yard/default/layout/html/logo.erb +0 -1
- data/gem_tasks/yard/default/layout/html/setup.rb +0 -4
- data/lib/cucumber/mappings.rb +0 -238
- data/spec/cucumber/mappings_spec.rb +0 -180
@@ -1,180 +0,0 @@
|
|
1
|
-
require_relative "../../lib/cucumber/mappings"
|
2
|
-
require 'cucumber/core'
|
3
|
-
require 'cucumber/core/gherkin/writer'
|
4
|
-
|
5
|
-
module Cucumber
|
6
|
-
class Mappings
|
7
|
-
describe Scenario do
|
8
|
-
include Core::Gherkin::Writer
|
9
|
-
include Core
|
10
|
-
let(:ruby) { double.as_null_object }
|
11
|
-
let(:runtime) do
|
12
|
-
double(
|
13
|
-
load_programming_language: ruby,
|
14
|
-
step_match: double
|
15
|
-
)
|
16
|
-
end
|
17
|
-
let(:mappings) { Mappings.new(runtime) }
|
18
|
-
let(:report) { double.as_null_object }
|
19
|
-
|
20
|
-
it "responds to #source_tag_names" do
|
21
|
-
define_gherkin do
|
22
|
-
feature 'test', tags: '@foo @bar' do
|
23
|
-
scenario 'test', tags: '@baz' do
|
24
|
-
step 'passing'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
before do |scenario|
|
30
|
-
expect(scenario.source_tag_names).to eq %w(@foo @bar @baz)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#failed?" do
|
35
|
-
|
36
|
-
it "is true if the test case is in a failed state" do
|
37
|
-
define_gherkin do
|
38
|
-
feature do
|
39
|
-
scenario do
|
40
|
-
step 'failing'
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
allow(runtime).to receive(:step_match) do |step_name|
|
46
|
-
if step_name == 'failing'
|
47
|
-
step_match = double
|
48
|
-
allow(step_match).to receive(:invoke) { fail }
|
49
|
-
step_match
|
50
|
-
else
|
51
|
-
raise Cucumber::Undefined
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
after do |test_case|
|
56
|
-
expect(test_case).to be_failed
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "#scenario_outline" do
|
63
|
-
|
64
|
-
# TODO: is this actually desired behaviour?
|
65
|
-
it "throws a NoMethodError when the test case is from a scenario" do
|
66
|
-
define_gherkin do
|
67
|
-
feature do
|
68
|
-
scenario do
|
69
|
-
step 'passing'
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
before do |test_case|
|
75
|
-
expect{ test_case.scenario_outline }.to raise_error(NoMethodError)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
it "points to self when the test case is from a scenario outline" do
|
80
|
-
define_gherkin do
|
81
|
-
feature do
|
82
|
-
scenario_outline 'outline' do
|
83
|
-
step 'passing'
|
84
|
-
|
85
|
-
examples 'examples' do
|
86
|
-
row 'a'
|
87
|
-
row '1'
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
before do |test_case|
|
94
|
-
expect(test_case.scenario_outline).to_not be_nil
|
95
|
-
expect(test_case.scenario_outline.name).to eq "Scenario Outline: outline, examples (row 1)"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
|
-
describe "#outline?" do
|
102
|
-
|
103
|
-
it "returns false when the test case is from a scenario" do
|
104
|
-
define_gherkin do
|
105
|
-
feature do
|
106
|
-
scenario do
|
107
|
-
step 'passing'
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
before do |test_case|
|
113
|
-
expect(test_case).to_not be_an_outline
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
it "returns true when the test case is from a scenario" do
|
118
|
-
define_gherkin do
|
119
|
-
feature do
|
120
|
-
scenario_outline do
|
121
|
-
step 'passing'
|
122
|
-
|
123
|
-
examples 'examples' do
|
124
|
-
row 'a'
|
125
|
-
row '1'
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
before do |test_case|
|
132
|
-
expect(test_case).to be_an_outline
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
end
|
137
|
-
attr_accessor :gherkin_docs
|
138
|
-
|
139
|
-
def define_gherkin(&block)
|
140
|
-
self.gherkin_docs = [gherkin(&block)]
|
141
|
-
end
|
142
|
-
|
143
|
-
def before
|
144
|
-
# TODO: the complexity of this stubbing shows we need to clean up the interface
|
145
|
-
scenario_spy = nil
|
146
|
-
allow(ruby).to receive(:hooks_for) do |phase, scenario|
|
147
|
-
if phase == :before
|
148
|
-
hook = double
|
149
|
-
expect(hook).to receive(:invoke) do |phase, scenario|
|
150
|
-
scenario_spy = scenario
|
151
|
-
end
|
152
|
-
[hook]
|
153
|
-
else
|
154
|
-
[]
|
155
|
-
end
|
156
|
-
end
|
157
|
-
execute gherkin_docs, mappings, report
|
158
|
-
yield scenario_spy
|
159
|
-
end
|
160
|
-
|
161
|
-
def after
|
162
|
-
# TODO: the complexity of this stubbing shows we need to clean up the interface
|
163
|
-
scenario_spy = nil
|
164
|
-
allow(ruby).to receive(:hooks_for) do |phase, scenario|
|
165
|
-
if phase == :after
|
166
|
-
hook = double
|
167
|
-
expect(hook).to receive(:invoke) do |phase, scenario|
|
168
|
-
scenario_spy = scenario
|
169
|
-
end
|
170
|
-
[hook]
|
171
|
-
else
|
172
|
-
[]
|
173
|
-
end
|
174
|
-
end
|
175
|
-
execute gherkin_docs, mappings, report
|
176
|
-
yield scenario_spy
|
177
|
-
end
|
178
|
-
end
|
179
|
-
end
|
180
|
-
end
|