cucumber 0.3.104 → 0.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +50 -3
- data/Manifest.txt +20 -2
- data/Rakefile +4 -0
- data/config/hoe.rb +20 -14
- data/examples/i18n/tr/Rakefile +6 -0
- data/examples/i18n/tr/features/bo/314/210lme.feature +10 -0
- data/examples/i18n/tr/features/step_definitons/hesap_makinesi_ad/304/261mlar/304/261.rb +24 -0
- data/examples/i18n/tr/features/toplama.feature +18 -0
- data/examples/i18n/tr/lib/hesap_makinesi.rb +15 -0
- data/examples/python/features/step_definitions/fib_steps.py +9 -1
- data/examples/ruby2python/features/fibonacci.feature +19 -0
- data/examples/{python → ruby2python}/features/step_definitions/fib_steps.rb +0 -0
- data/examples/ruby2python/features/support/env.rb +21 -0
- data/examples/ruby2python/lib/fib.py +7 -0
- data/features/bug_475.feature +43 -0
- data/features/exception_in_before_block.feature +34 -1
- data/features/html_formatter.feature +1 -1
- data/features/language_help.feature +68 -0
- data/features/rake_task.feature +34 -60
- data/features/simplest.feature +11 -0
- data/features/step_definitions/simplest_steps.rb +6 -0
- data/features/support/env.rb +1 -1
- data/features/support/env.rb.simplest +7 -0
- data/features/table_diffing.feature +1 -1
- data/features/table_mapping.feature +35 -0
- data/features/transform.feature +133 -2
- data/features/usage_and_stepdefs_formatter.feature +4 -2
- data/gem_tasks/contributors.rake +2 -1
- data/lib/cucumber/ast/background.rb +17 -5
- data/lib/cucumber/ast/outline_table.rb +8 -1
- data/lib/cucumber/ast/scenario.rb +2 -1
- data/lib/cucumber/ast/step.rb +6 -1
- data/lib/cucumber/ast/step_invocation.rb +14 -1
- data/lib/cucumber/ast/table.rb +30 -6
- data/lib/cucumber/cli/configuration.rb +1 -1
- data/lib/cucumber/cli/language_help_formatter.rb +27 -14
- data/lib/cucumber/cli/options.rb +2 -1
- data/lib/cucumber/cli/profile_loader.rb +12 -4
- data/lib/cucumber/core_ext/instance_exec.rb +29 -25
- data/lib/cucumber/formatter/junit.rb +50 -45
- data/lib/cucumber/formatter/pdf.rb +16 -4
- data/lib/cucumber/formatter/usage.rb +2 -14
- data/lib/cucumber/language_support/language_methods.rb +23 -3
- data/lib/cucumber/languages.yml +14 -0
- data/lib/cucumber/parser/natural_language.rb +1 -1
- data/lib/cucumber/parser/table.rb +10 -7
- data/lib/cucumber/parser/table.tt +1 -1
- data/lib/cucumber/platform.rb +1 -0
- data/lib/cucumber/py_support/py_dsl.py +10 -8
- data/lib/cucumber/py_support/py_language.py +8 -0
- data/lib/cucumber/py_support/py_language.rb +24 -11
- data/lib/cucumber/rails/action_controller.rb +6 -1
- data/lib/cucumber/rails/active_record.rb +5 -4
- data/lib/cucumber/rake/task.rb +7 -82
- data/lib/cucumber/rb_support/rb_language.rb +0 -4
- data/lib/cucumber/rb_support/rb_step_definition.rb +4 -6
- data/lib/cucumber/rb_support/rb_transform.rb +9 -7
- data/lib/cucumber/step_definition_light.rb +20 -0
- data/lib/cucumber/step_match.rb +1 -1
- data/lib/cucumber/step_mother.rb +5 -1
- data/lib/cucumber/version.rb +3 -3
- data/lib/cucumber/webrat/element_locator.rb +2 -0
- data/rails_generators/cucumber/cucumber_generator.rb +8 -9
- data/rails_generators/cucumber/templates/cucumber +14 -6
- data/rails_generators/cucumber/templates/cucumber.rake +9 -1
- data/rails_generators/cucumber/templates/cucumber_environment.rb +5 -1
- data/rails_generators/cucumber/templates/env.rb +29 -14
- data/rails_generators/cucumber/templates/paths.rb +1 -1
- data/rails_generators/cucumber/templates/spork_env.rb +39 -17
- data/rails_generators/cucumber/templates/version_check.rb +29 -0
- data/rails_generators/cucumber/templates/webrat_steps.rb +5 -0
- data/spec/cucumber/ast/outline_table_spec.rb +21 -0
- data/spec/cucumber/ast/table_spec.rb +18 -0
- data/spec/cucumber/formatter/html_spec.rb +33 -69
- data/spec/cucumber/formatter/junit_spec.rb +73 -0
- data/spec/cucumber/formatter/spec_helper.rb +50 -0
- data/spec/cucumber/parser/table_parser_spec.rb +2 -2
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +10 -1
- data/spec/cucumber/step_mother_spec.rb +6 -0
- metadata +32 -8
- data/examples/python/features/support/env.rb +0 -21
@@ -1,3 +1,8 @@
|
|
1
|
+
# IMPORTANT: This file was generated by Cucumber <%= Cucumber::VERSION::STRING %>
|
2
|
+
# Edit at your own peril - it's recommended to regenerate this file
|
3
|
+
# in the future when you upgrade to a newer version of Cucumber.
|
4
|
+
# Consider adding your own code to a new file instead of editing this one.
|
5
|
+
|
1
6
|
require 'rubygems'
|
2
7
|
require 'spork'
|
3
8
|
|
@@ -5,31 +10,48 @@ Spork.prefork do
|
|
5
10
|
# Sets up the Rails environment for Cucumber
|
6
11
|
ENV["RAILS_ENV"] = "cucumber"
|
7
12
|
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
|
13
|
+
require 'cucumber/rails/world'
|
8
14
|
|
9
|
-
require 'webrat'
|
10
|
-
require 'cucumber/webrat/element_locator' # Lets you do table.diff!(element_at('#my_table_or_dl_or_ul_or_ol').to_table)
|
11
|
-
|
12
|
-
Webrat.configure do |config|
|
13
|
-
config.mode = :rails
|
14
|
-
end
|
15
|
-
|
16
|
-
require 'webrat/core/matchers'
|
17
15
|
require 'cucumber'
|
18
|
-
|
19
16
|
# Comment out the next line if you don't want Cucumber Unicode support
|
20
17
|
require 'cucumber/formatter/unicode'
|
21
|
-
require '
|
18
|
+
require 'cucumber/webrat/element_locator' # Lets you do table.diff!(element_at('#my_table_or_dl_or_ul_or_ol').to_table)
|
19
|
+
<% if framework == :rspec -%>
|
22
20
|
require 'cucumber/rails/rspec'
|
21
|
+
<% end -%>
|
22
|
+
|
23
|
+
require 'webrat'
|
24
|
+
require 'webrat/core/matchers'
|
25
|
+
Webrat.configure do |config|
|
26
|
+
config.mode = :rails
|
27
|
+
config.open_error_files = false # Set to true if you want error pages to pop up in the browser
|
28
|
+
end
|
23
29
|
end
|
24
30
|
|
25
31
|
Spork.each_run do
|
26
|
-
# This code will be run each time you
|
32
|
+
# This code will be run each time you start cucumber.
|
27
33
|
|
28
|
-
#
|
29
|
-
#
|
30
|
-
|
34
|
+
# If you set this to true, each scenario will run in a database transaction.
|
35
|
+
# You can still turn off transactions on a per-scenario basis, simply tagging
|
36
|
+
# a feature or scenario with the @no-txn tag.
|
37
|
+
#
|
38
|
+
# If you set this to false, transactions will be off for all scenarios,
|
39
|
+
# regardless of whether you use @no-txn or not.
|
40
|
+
#
|
41
|
+
# Beware that turning transactions off will leave data in your database
|
42
|
+
# after each scenario, which can lead to hard-to-debug failures in
|
43
|
+
# subsequent scenarios. If you do this, we recommend you create a Before
|
44
|
+
# block that will explicitly put your database in a known state.
|
45
|
+
Cucumber::Rails::World.use_transactional_fixtures = true
|
31
46
|
|
32
|
-
#
|
33
|
-
#
|
34
|
-
|
47
|
+
# If you set this to false, any error raised from within your app will bubble
|
48
|
+
# up to your step definition and out to cucumber unless you catch it somewhere
|
49
|
+
# on the way. You can make Rails rescue errors and render error pages on a
|
50
|
+
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
|
51
|
+
#
|
52
|
+
# If you set this to true, Rails will rescue all errors and render error
|
53
|
+
# pages, more or less in the same way your application would behave in the
|
54
|
+
# default production environment. It's not recommended to do this for all
|
55
|
+
# of your scenarions, as this makes it hard to discover errors in your application.
|
56
|
+
ActionController::Base.allow_rescue = false
|
35
57
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
if Cucumber::VERSION::STRING != '<%= Cucumber::VERSION::STRING %>'
|
2
|
+
warning = <<-WARNING
|
3
|
+
(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)
|
4
|
+
|
5
|
+
(::) R O T T E N C U C U M B E R A L E R T (::)
|
6
|
+
|
7
|
+
Your #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} file was generated with Cucumber <%= Cucumber::VERSION::STRING %>,
|
8
|
+
but you seem to be running Cucumber #{Cucumber::VERSION::STRING}. If you're running an older
|
9
|
+
version than #{Cucumber::VERSION::STRING}, just upgrade your gem. If you're running a newer
|
10
|
+
version than #{Cucumber::VERSION::STRING} you should:
|
11
|
+
|
12
|
+
1) Read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
|
13
|
+
|
14
|
+
2) Regenerate your cucumber environment with the following command:
|
15
|
+
|
16
|
+
ruby script/generate cucumber
|
17
|
+
|
18
|
+
If you get prompted to replace a file, hit 'd' to see the difference.
|
19
|
+
When you're sure you have captured any personal edits, confirm that you
|
20
|
+
want to overwrite #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} by pressing 'y'. Then reapply any
|
21
|
+
personal changes that may have been overwritten.
|
22
|
+
|
23
|
+
This message will then self destruct.
|
24
|
+
|
25
|
+
(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)
|
26
|
+
WARNING
|
27
|
+
warn(warning)
|
28
|
+
at_exit {warn(warning)}
|
29
|
+
end
|
@@ -1,3 +1,8 @@
|
|
1
|
+
# IMPORTANT: This file was generated by Cucumber <%= Cucumber::VERSION::STRING %>
|
2
|
+
# Edit at your own peril - it's recommended to regenerate this file
|
3
|
+
# in the future when you upgrade to a newer version of Cucumber.
|
4
|
+
# Consider adding your own code to a new file instead of editing this one.
|
5
|
+
|
1
6
|
require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
|
2
7
|
|
3
8
|
# Commonly used webrat steps
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Cucumber::Ast
|
4
|
+
describe OutlineTable do
|
5
|
+
describe OutlineTable::ExampleRow do
|
6
|
+
describe "a header row" do
|
7
|
+
before(:each) do
|
8
|
+
@row = OutlineTable::ExampleRow.new(
|
9
|
+
mock('table', :index => 0),
|
10
|
+
[mock('cell', :status= => nil)]
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should raise an error if you try to call #failed?" do
|
15
|
+
@row.accept_plain mock('visitor', :visit_table_cell => nil)
|
16
|
+
lambda{ @row.failed? }.should raise_error(NoMethodError, /cannot pass or fail/)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -62,6 +62,24 @@ module Cucumber
|
|
62
62
|
}.should raise_error('The column named "two" does not exist')
|
63
63
|
end
|
64
64
|
|
65
|
+
describe "#match" do
|
66
|
+
before(:each) do
|
67
|
+
@table = Table.new([
|
68
|
+
%w{one four seven},
|
69
|
+
%w{4444 55555 666666}
|
70
|
+
])
|
71
|
+
end
|
72
|
+
|
73
|
+
it "returns nil if headers do not match" do
|
74
|
+
@table.match('does,not,match').should be_nil
|
75
|
+
end
|
76
|
+
it "requires a table: prefix on match" do
|
77
|
+
@table.match('table:one,four,seven').should_not be_nil
|
78
|
+
end
|
79
|
+
it "does not match if no table: prefix on match" do
|
80
|
+
@table.match('one,four,seven').should be_nil
|
81
|
+
end
|
82
|
+
end
|
65
83
|
describe "#transpose" do
|
66
84
|
before(:each) do
|
67
85
|
@table = Table.new([
|
@@ -1,84 +1,48 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
3
|
require 'cucumber/formatter/html'
|
3
4
|
require 'nokogiri'
|
4
5
|
require 'cucumber/rb_support/rb_language'
|
5
6
|
|
6
7
|
module Cucumber
|
7
8
|
module Formatter
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
def define_steps(&block)
|
16
|
-
@step_defs = block
|
17
|
-
end
|
18
|
-
end
|
19
|
-
module SpecHelper
|
20
|
-
def load_features(content)
|
21
|
-
feature_file = FeatureFile.new(nil, content)
|
22
|
-
features = Ast::Features.new
|
23
|
-
features.add_feature feature_file.parse(@step_mother, {})
|
24
|
-
features
|
25
|
-
end
|
26
|
-
|
27
|
-
def run(features)
|
28
|
-
# options = { :verbose => true }
|
29
|
-
options = {}
|
30
|
-
tree_walker = Cucumber::Ast::TreeWalker.new(@step_mother, [@formatter], options, STDOUT)
|
31
|
-
tree_walker.visit_features(features)
|
32
|
-
end
|
33
|
-
|
34
|
-
def define_steps
|
35
|
-
return unless step_defs = self.class.step_defs
|
36
|
-
rb = @step_mother.load_programming_language('rb')
|
37
|
-
dsl = Object.new
|
38
|
-
dsl.extend RbSupport::RbDsl
|
39
|
-
dsl.instance_exec &step_defs
|
40
|
-
end
|
41
|
-
|
9
|
+
|
10
|
+
describe Html do
|
11
|
+
extend SpecHelperDsl
|
12
|
+
include SpecHelper
|
13
|
+
|
42
14
|
Spec::Matchers.define :have_css_node do |css, regexp|
|
43
15
|
match do |doc|
|
44
16
|
nodes = doc.css(css)
|
45
17
|
nodes.detect{ |node| node.text =~ regexp }
|
46
18
|
end
|
47
19
|
end
|
48
|
-
end
|
49
20
|
|
50
|
-
describe Html do
|
51
21
|
before(:each) do
|
52
22
|
@out = StringIO.new
|
53
|
-
@formatter = Html.new(
|
54
|
-
@step_mother = StepMother.new
|
23
|
+
@formatter = Html.new(step_mother, @out, {})
|
55
24
|
end
|
56
|
-
|
57
|
-
extend SpecHelperDsl
|
58
|
-
include SpecHelper
|
59
|
-
|
25
|
+
|
60
26
|
it "should not raise an error when visiting a blank feature name" do
|
61
27
|
lambda { @formatter.feature_name("") }.should_not raise_error
|
62
28
|
end
|
63
|
-
|
29
|
+
|
64
30
|
describe "given a single feature" do
|
65
31
|
before(:each) do
|
66
|
-
|
67
|
-
define_steps
|
68
|
-
run(features)
|
32
|
+
run_defined_feature
|
69
33
|
@doc = Nokogiri.HTML(@out.string)
|
70
34
|
end
|
71
|
-
|
35
|
+
|
72
36
|
describe "with a comment" do
|
73
37
|
define_feature <<-FEATURE
|
74
38
|
# Healthy
|
75
39
|
FEATURE
|
76
|
-
|
40
|
+
|
77
41
|
it { @out.string.should =~ /^\<!DOCTYPE/ }
|
78
42
|
it { @out.string.should =~ /\<\/html\>$/ }
|
79
43
|
it { @doc.should have_css_node('.feature .comment', /Healthy/) }
|
80
44
|
end
|
81
|
-
|
45
|
+
|
82
46
|
describe "with a tag" do
|
83
47
|
define_feature <<-FEATURE
|
84
48
|
@foo
|
@@ -86,7 +50,7 @@ module Cucumber
|
|
86
50
|
|
87
51
|
it { @doc.should have_css_node('.feature .tag', /foo/) }
|
88
52
|
end
|
89
|
-
|
53
|
+
|
90
54
|
describe "with a narrative" do
|
91
55
|
define_feature <<-FEATURE
|
92
56
|
Feature: Bananas
|
@@ -98,18 +62,18 @@ module Cucumber
|
|
98
62
|
it { @doc.should have_css_node('.feature h2', /Bananas/) }
|
99
63
|
it { @doc.should have_css_node('.feature .narrative', /must eat bananas/) }
|
100
64
|
end
|
101
|
-
|
65
|
+
|
102
66
|
describe "with a background" do
|
103
67
|
define_feature <<-FEATURE
|
104
68
|
Feature: Bananas
|
105
|
-
|
69
|
+
|
106
70
|
Background:
|
107
71
|
Given there are bananas
|
108
72
|
FEATURE
|
109
73
|
|
110
74
|
it { @doc.should have_css_node('.feature .background', /there are bananas/) }
|
111
75
|
end
|
112
|
-
|
76
|
+
|
113
77
|
describe "with a scenario" do
|
114
78
|
define_feature <<-FEATURE
|
115
79
|
Scenario: Monkey eats banana
|
@@ -119,12 +83,12 @@ module Cucumber
|
|
119
83
|
it { @doc.should have_css_node('.feature h3', /Monkey eats banana/) }
|
120
84
|
it { @doc.should have_css_node('.feature .scenario .step', /there are bananas/) }
|
121
85
|
end
|
122
|
-
|
86
|
+
|
123
87
|
describe "with a scenario outline" do
|
124
88
|
define_feature <<-FEATURE
|
125
89
|
Scenario Outline: Monkey eats a balanced diet
|
126
90
|
Given there are <Things>
|
127
|
-
|
91
|
+
|
128
92
|
Examples: Fruit
|
129
93
|
| Things |
|
130
94
|
| apples |
|
@@ -134,14 +98,14 @@ module Cucumber
|
|
134
98
|
| broccoli |
|
135
99
|
| carrots |
|
136
100
|
FEATURE
|
137
|
-
|
101
|
+
|
138
102
|
it { @doc.should have_css_node('.feature .scenario.outline h4', /Fruit/) }
|
139
103
|
it { @doc.should have_css_node('.feature .scenario.outline h4', /Vegetables/) }
|
140
104
|
it { @doc.css('.feature .scenario.outline h4').length.should == 2}
|
141
105
|
it { @doc.should have_css_node('.feature .scenario.outline table', //) }
|
142
106
|
it { @doc.should have_css_node('.feature .scenario.outline table td', /carrots/) }
|
143
107
|
end
|
144
|
-
|
108
|
+
|
145
109
|
describe "with a step with a py string" do
|
146
110
|
define_feature <<-FEATURE
|
147
111
|
Scenario: Monkey goes to town
|
@@ -150,7 +114,7 @@ module Cucumber
|
|
150
114
|
foo
|
151
115
|
"""
|
152
116
|
FEATURE
|
153
|
-
|
117
|
+
|
154
118
|
it { @doc.should have_css_node('.feature .scenario .val', /foo/) }
|
155
119
|
end
|
156
120
|
|
@@ -162,10 +126,10 @@ module Cucumber
|
|
162
126
|
| foo |
|
163
127
|
| bar |
|
164
128
|
FEATURE
|
165
|
-
|
129
|
+
|
166
130
|
it { @doc.should have_css_node('.feature .scenario table td', /foo/) }
|
167
131
|
end
|
168
|
-
|
132
|
+
|
169
133
|
describe "with a table in the background and the scenario" do
|
170
134
|
define_feature <<-FEATURE
|
171
135
|
Background:
|
@@ -177,10 +141,10 @@ module Cucumber
|
|
177
141
|
| e | f |
|
178
142
|
| g | h |
|
179
143
|
FEATURE
|
180
|
-
|
144
|
+
|
181
145
|
it { @doc.css('td').length.should == 8 }
|
182
146
|
end
|
183
|
-
|
147
|
+
|
184
148
|
describe "with a py string in the background and the scenario" do
|
185
149
|
define_feature <<-FEATURE
|
186
150
|
Background:
|
@@ -198,37 +162,37 @@ module Cucumber
|
|
198
162
|
it { @doc.css('.feature .background pre.val').length.should == 1 }
|
199
163
|
it { @doc.css('.feature .scenario pre.val').length.should == 1 }
|
200
164
|
end
|
201
|
-
|
165
|
+
|
202
166
|
describe "with a step that fails in the scenario" do
|
203
167
|
define_steps do
|
204
168
|
Given(/boo/) { raise 'eek' }
|
205
169
|
end
|
206
|
-
|
170
|
+
|
207
171
|
define_feature(<<-FEATURE)
|
208
172
|
Scenario: Monkey gets a fright
|
209
173
|
Given boo
|
210
174
|
FEATURE
|
211
|
-
|
175
|
+
|
212
176
|
it { @doc.should have_css_node('.feature .scenario .step.failed', /eek/) }
|
213
177
|
end
|
214
|
-
|
178
|
+
|
215
179
|
describe "with a step that fails in the backgound" do
|
216
180
|
define_steps do
|
217
181
|
Given(/boo/) { raise 'eek' }
|
218
182
|
end
|
219
|
-
|
183
|
+
|
220
184
|
define_feature(<<-FEATURE)
|
221
185
|
Background:
|
222
186
|
Given boo
|
223
187
|
Scenario:
|
224
188
|
Given yay
|
225
189
|
FEATURE
|
226
|
-
|
190
|
+
|
227
191
|
it { @doc.should have_css_node('.feature .background .step.failed', /eek/) }
|
228
192
|
it { @doc.should_not have_css_node('.feature .scenario .step.failed', //) }
|
229
193
|
it { @doc.should have_css_node('.feature .scenario .step.undefined', /yay/) }
|
230
194
|
end
|
231
|
-
|
195
|
+
|
232
196
|
end
|
233
197
|
end
|
234
198
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
+
|
4
|
+
require 'cucumber/formatter/junit'
|
5
|
+
require 'nokogiri'
|
6
|
+
|
7
|
+
module Cucumber::Formatter
|
8
|
+
describe Junit do
|
9
|
+
extend SpecHelperDsl
|
10
|
+
include SpecHelper
|
11
|
+
|
12
|
+
class TestDoubleJunitFormatter < Junit
|
13
|
+
attr_reader :written_files
|
14
|
+
|
15
|
+
def write_file(feature_filename, data)
|
16
|
+
@written_files ||= {}
|
17
|
+
@written_files[feature_filename] = data
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
before(:each) do
|
22
|
+
File.stub!(:directory?).and_return(true)
|
23
|
+
@formatter = TestDoubleJunitFormatter.new(step_mother, '', {})
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "given a single feature" do
|
27
|
+
before(:each) do
|
28
|
+
run_defined_feature
|
29
|
+
@doc = Nokogiri.XML(@formatter.written_files.values.first)
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "with a single scenario" do
|
33
|
+
define_feature <<-FEATURE
|
34
|
+
Feature: One passing scenario, one failing scenario
|
35
|
+
|
36
|
+
Scenario: Passing
|
37
|
+
Given a passing scenario
|
38
|
+
FEATURE
|
39
|
+
|
40
|
+
it { @doc.to_s.should =~ /One passing scenario, one failing scenario/ }
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "with a scenario outline table" do
|
44
|
+
define_steps do
|
45
|
+
Given(/.*/) { }
|
46
|
+
end
|
47
|
+
|
48
|
+
define_feature <<-FEATURE
|
49
|
+
Feature: Eat things when hungry
|
50
|
+
|
51
|
+
Scenario Outline: Eat things
|
52
|
+
Given <Things>
|
53
|
+
|
54
|
+
Examples: Good
|
55
|
+
| Things |
|
56
|
+
| Cucumber |
|
57
|
+
| Whisky |
|
58
|
+
Examples: Evil
|
59
|
+
| Things |
|
60
|
+
| Big Mac |
|
61
|
+
FEATURE
|
62
|
+
|
63
|
+
it { @doc.to_s.should =~ /Eat things when hungry/ }
|
64
|
+
it { @doc.to_s.should =~ /Cucumber/ }
|
65
|
+
it { @doc.to_s.should =~ /Whisky/ }
|
66
|
+
it { @doc.to_s.should =~ /Big Mac/ }
|
67
|
+
it { @doc.to_s.should_not =~ /Things/ }
|
68
|
+
it { @doc.to_s.should_not =~ /Good|Evil/ }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|