cucumber 0.1.10 → 0.1.11
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.
- data/History.txt +18 -0
- data/Manifest.txt +1 -0
- data/Rakefile +1 -2
- data/config/hoe.rb +0 -1
- data/gem_tasks/rspec.rake +28 -14
- data/lib/autotest/cucumber_mixin.rb +23 -1
- data/lib/cucumber.rb +0 -1
- data/lib/cucumber/cli.rb +46 -11
- data/lib/cucumber/core_ext/string.rb +7 -0
- data/lib/cucumber/executor.rb +0 -2
- data/lib/cucumber/languages.yml +11 -0
- data/lib/cucumber/platform.rb +1 -0
- data/lib/cucumber/step_mother.rb +1 -1
- data/lib/cucumber/tree.rb +0 -2
- data/lib/cucumber/tree/scenario.rb +2 -1
- data/lib/cucumber/treetop_parser/feature_en-lol.rb +1591 -0
- data/lib/cucumber/version.rb +1 -1
- data/rails_generators/cucumber/templates/env.rb +4 -1
- data/rails_generators/cucumber/templates/webrat_steps.rb +14 -16
- data/spec/cucumber/cli_spec.rb +158 -1
- metadata +4 -13
data/lib/cucumber/version.rb
CHANGED
@@ -4,5 +4,8 @@ require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
|
|
4
4
|
require 'cucumber/rails/world'
|
5
5
|
Cucumber::Rails.use_transactional_fixtures
|
6
6
|
|
7
|
-
|
7
|
+
require 'webrat/rails'
|
8
|
+
|
9
|
+
# Comment out the next two lines if you're not using RSpec's matchers (should / should_not) in your steps.
|
8
10
|
require 'cucumber/rails/rspec'
|
11
|
+
require 'webrat/rspec-rails'
|
@@ -1,28 +1,26 @@
|
|
1
1
|
# Commonly used webrat steps
|
2
2
|
# http://github.com/brynary/webrat
|
3
3
|
|
4
|
-
require 'webrat' if !defined?(Webrat) # Because some people have it installed as a Gem
|
5
|
-
|
6
4
|
When /^I press "(.*)"$/ do |button|
|
7
|
-
|
5
|
+
click_button(button)
|
8
6
|
end
|
9
7
|
|
10
8
|
When /^I follow "(.*)"$/ do |link|
|
11
|
-
|
9
|
+
click_link(link)
|
12
10
|
end
|
13
11
|
|
14
12
|
When /^I fill in "(.*)" with "(.*)"$/ do |field, value|
|
15
|
-
|
13
|
+
fill_in(field, :with => value)
|
16
14
|
end
|
17
15
|
|
18
16
|
When /^I select "(.*)" from "(.*)"$/ do |value, field|
|
19
|
-
|
17
|
+
select(value, :from => field)
|
20
18
|
end
|
21
19
|
|
22
20
|
# Use this step in conjunction with Rail's datetime_select helper. For example:
|
23
21
|
# When I select "December 25, 2008 10:00" as the date and time
|
24
22
|
When /^I select "(.*)" as the date and time$/ do |time|
|
25
|
-
|
23
|
+
select_datetime(time)
|
26
24
|
end
|
27
25
|
|
28
26
|
# Use this step when using multiple datetime_select helpers on a page or
|
@@ -35,7 +33,7 @@ end
|
|
35
33
|
# When I select "November 23, 2004 11:20" as the "Preferred" data and time
|
36
34
|
# And I select "November 25, 2004 10:30" as the "Alternative" data and time
|
37
35
|
When /^I select "(.*)" as the "(.*)" date and time$/ do |datetime, datetime_label|
|
38
|
-
|
36
|
+
select_datetime(datetime, :from => datetime_label)
|
39
37
|
end
|
40
38
|
|
41
39
|
# Use this step in conjuction with Rail's time_select helper. For example:
|
@@ -43,43 +41,43 @@ end
|
|
43
41
|
# Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
|
44
42
|
# will convert the 2:20PM to 14:20 and then select it.
|
45
43
|
When /^I select "(.*)" as the time$/ do |time|
|
46
|
-
|
44
|
+
select_time(time)
|
47
45
|
end
|
48
46
|
|
49
47
|
# Use this step when using multiple time_select helpers on a page or you want to
|
50
48
|
# specify the name of the time on the form. For example:
|
51
49
|
# When I select "7:30AM" as the "Gym" time
|
52
50
|
When /^I select "(.*)" as the "(.*)" time$/ do |time, time_label|
|
53
|
-
|
51
|
+
select_time(time, :from => time_label)
|
54
52
|
end
|
55
53
|
|
56
54
|
# Use this step in conjuction with Rail's date_select helper. For example:
|
57
55
|
# When I select "February 20, 1981" as the date
|
58
56
|
When /^I select "(.*)" as the date$/ do |date|
|
59
|
-
|
57
|
+
select_date(date)
|
60
58
|
end
|
61
59
|
|
62
60
|
# Use this step when using multiple date_select helpers on one page or
|
63
61
|
# you want to specify the name of the date on the form. For example:
|
64
62
|
# When I select "April 26, 1982" as the "Date of Birth" date
|
65
63
|
When /^I select "(.*)" as the "(.*)" date$/ do |date, date_label|
|
66
|
-
|
64
|
+
select_date(date, :from => date_label)
|
67
65
|
end
|
68
66
|
|
69
67
|
When /^I check "(.*)"$/ do |field|
|
70
|
-
|
68
|
+
check(field)
|
71
69
|
end
|
72
70
|
|
73
71
|
When /^I uncheck "(.*)"$/ do |field|
|
74
|
-
|
72
|
+
uncheck(field)
|
75
73
|
end
|
76
74
|
|
77
75
|
When /^I choose "(.*)"$/ do |field|
|
78
|
-
|
76
|
+
choose(field)
|
79
77
|
end
|
80
78
|
|
81
79
|
When /^I attach the file at "(.*)" to "(.*)" $/ do |path, field|
|
82
|
-
|
80
|
+
attach_file(field, path)
|
83
81
|
end
|
84
82
|
|
85
83
|
Then /^I should see "(.*)"$/ do |text|
|
data/spec/cucumber/cli_spec.rb
CHANGED
@@ -12,6 +12,10 @@ module Cucumber
|
|
12
12
|
stub(Broadcaster, {:register => nil}.merge(stubs))
|
13
13
|
end
|
14
14
|
|
15
|
+
def mock_features(stubs ={})
|
16
|
+
stub('features', {:<< => nil}.merge(stubs))
|
17
|
+
end
|
18
|
+
|
15
19
|
before(:each) do
|
16
20
|
Kernel.stub!(:exit)
|
17
21
|
end
|
@@ -101,6 +105,40 @@ Defined profiles in cucumber.yml:
|
|
101
105
|
cli.options[:source].should be_false
|
102
106
|
end
|
103
107
|
|
108
|
+
it "should accept --verbose option" do
|
109
|
+
cli = CLI.new
|
110
|
+
cli.parse_options!(%w{--verbose})
|
111
|
+
|
112
|
+
cli.options[:verbose].should be_true
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "verbose mode" do
|
116
|
+
|
117
|
+
before(:each) do
|
118
|
+
@out = StringIO.new
|
119
|
+
@cli = CLI.new(@out)
|
120
|
+
@cli.stub!(:require)
|
121
|
+
Dir.stub!(:[])
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should show ruby files required" do
|
125
|
+
@cli.parse_options!(%w{--verbose --require example.rb})
|
126
|
+
@cli.execute!(stub('step mother'), mock_executor, mock_features)
|
127
|
+
|
128
|
+
@out.string.should include('example.rb')
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should show feature files parsed" do
|
132
|
+
TreetopParser::FeatureParser.stub!(:new).and_return(mock("feature parser", :parse_feature => nil))
|
133
|
+
|
134
|
+
@cli.parse_options!(%w{--verbose example.feature})
|
135
|
+
@cli.execute!(stub('step mother'), mock_executor, mock_features)
|
136
|
+
|
137
|
+
@out.string.should include('example.feature')
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
104
142
|
it "should accept --out option" do
|
105
143
|
cli = CLI.new
|
106
144
|
File.should_receive(:open).with('jalla.txt', 'w')
|
@@ -179,6 +217,125 @@ Defined profiles in cucumber.yml:
|
|
179
217
|
|
180
218
|
cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
181
219
|
end
|
220
|
+
|
221
|
+
describe "--format with class" do
|
222
|
+
|
223
|
+
describe "in module" do
|
224
|
+
|
225
|
+
it "should resolve each module until it gets Formatter class" do
|
226
|
+
cli = CLI.new
|
227
|
+
mock_module = mock('module')
|
228
|
+
cli.parse_options!(%w{--format ZooModule::MonkeyFormatterClass})
|
229
|
+
Object.stub!(:const_defined?).and_return(true)
|
230
|
+
mock_module.stub!(:const_defined?).and_return(true)
|
231
|
+
|
232
|
+
Object.should_receive(:const_get).with('ZooModule').and_return(mock_module)
|
233
|
+
mock_module.should_receive(:const_get).with('MonkeyFormatterClass').and_return(mock('formatter class', :new => nil))
|
234
|
+
|
235
|
+
cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
236
|
+
end
|
237
|
+
|
238
|
+
end
|
239
|
+
|
240
|
+
describe "exists and valid constructor" do
|
241
|
+
|
242
|
+
before(:each) do
|
243
|
+
@mock_formatter_class = mock('formatter class')
|
244
|
+
Object.stub!(:const_get).and_return(@mock_formatter_class)
|
245
|
+
Object.stub!(:const_defined?).with('magical').and_return(true)
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should create the formatter" do
|
249
|
+
cli = CLI.new
|
250
|
+
mock_formatter = mock('magical formatter')
|
251
|
+
cli.parse_options!(%w{--format magical})
|
252
|
+
|
253
|
+
@mock_formatter_class.should_receive(:new)
|
254
|
+
|
255
|
+
cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should register the formatter with broadcaster" do
|
259
|
+
cli = CLI.new
|
260
|
+
broadcaster = Broadcaster.new
|
261
|
+
mock_formatter = mock('magical formatter')
|
262
|
+
Broadcaster.stub!(:new).and_return(broadcaster, stub("output broadcaster", :register => nil))
|
263
|
+
@mock_formatter_class.stub!(:new).and_return(mock_formatter)
|
264
|
+
cli.parse_options!(%w{--format magical})
|
265
|
+
|
266
|
+
broadcaster.should_receive(:register).with(mock_formatter)
|
267
|
+
|
268
|
+
cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
269
|
+
end
|
270
|
+
|
271
|
+
end
|
272
|
+
|
273
|
+
describe "exists but invalid constructor" do
|
274
|
+
|
275
|
+
before(:each) do
|
276
|
+
@out = StringIO.new
|
277
|
+
@error = StringIO.new
|
278
|
+
@cli = CLI.new(@out, @error)
|
279
|
+
|
280
|
+
mock_formatter_class = stub('formatter class')
|
281
|
+
mock_formatter_class.stub!(:new).and_raise("No such method")
|
282
|
+
Object.stub!(:const_get).and_return(mock_formatter_class)
|
283
|
+
Object.stub!(:const_defined?).with('exists_but_evil').and_return(true)
|
284
|
+
|
285
|
+
@cli.parse_options!(%w{--format exists_but_evil})
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should show exception" do
|
289
|
+
Kernel.stub!(:exit)
|
290
|
+
|
291
|
+
@cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
292
|
+
|
293
|
+
@error.string.should include("No such method")
|
294
|
+
end
|
295
|
+
|
296
|
+
it "should exit" do
|
297
|
+
Kernel.should_receive(:exit)
|
298
|
+
|
299
|
+
@cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
300
|
+
end
|
301
|
+
|
302
|
+
end
|
303
|
+
|
304
|
+
describe "non-existent" do
|
305
|
+
|
306
|
+
before(:each) do
|
307
|
+
@out = StringIO.new
|
308
|
+
@error = StringIO.new
|
309
|
+
@cli = CLI.new(@out, @error)
|
310
|
+
|
311
|
+
@cli.parse_options!(%w{--format invalid})
|
312
|
+
end
|
313
|
+
|
314
|
+
it "should display a format error" do
|
315
|
+
Kernel.stub!(:exit)
|
316
|
+
|
317
|
+
@cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
318
|
+
|
319
|
+
@error.string.should include("Invalid format: invalid\n")
|
320
|
+
end
|
321
|
+
|
322
|
+
it "should display --help" do
|
323
|
+
Kernel.stub!(:exit)
|
324
|
+
|
325
|
+
@cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
326
|
+
|
327
|
+
@out.string.should include("Usage: cucumber")
|
328
|
+
end
|
329
|
+
|
330
|
+
it "should exit" do
|
331
|
+
Kernel.should_receive(:exit)
|
332
|
+
|
333
|
+
@cli.execute!(stub('step mother'), mock_executor, stub('features'))
|
334
|
+
end
|
335
|
+
|
336
|
+
end
|
337
|
+
|
338
|
+
end
|
182
339
|
|
183
340
|
it "should accept multiple --scenario options" do
|
184
341
|
cli = CLI.new
|
@@ -267,7 +424,7 @@ Defined profiles in cucumber.yml:
|
|
267
424
|
|
268
425
|
Dir.should_receive(:[]).with("feature_directory/**/*.feature").any_number_of_times.and_return([])
|
269
426
|
|
270
|
-
cli.execute!(stub('step mother'), mock_executor,
|
427
|
+
cli.execute!(stub('step mother'), mock_executor, mock_features)
|
271
428
|
end
|
272
429
|
|
273
430
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Aslak Helles\xC3\xB8y"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-12-02 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -42,16 +42,6 @@ dependencies:
|
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: 1.1.2
|
44
44
|
version:
|
45
|
-
- !ruby/object:Gem::Dependency
|
46
|
-
name: rspec
|
47
|
-
type: :development
|
48
|
-
version_requirement:
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 1.1.11
|
54
|
-
version:
|
55
45
|
- !ruby/object:Gem::Dependency
|
56
46
|
name: hoe
|
57
47
|
type: :development
|
@@ -245,6 +235,7 @@ files:
|
|
245
235
|
- lib/cucumber/treetop_parser/feature_cy.rb
|
246
236
|
- lib/cucumber/treetop_parser/feature_da.rb
|
247
237
|
- lib/cucumber/treetop_parser/feature_de.rb
|
238
|
+
- lib/cucumber/treetop_parser/feature_en-lol.rb
|
248
239
|
- lib/cucumber/treetop_parser/feature_en-tx.rb
|
249
240
|
- lib/cucumber/treetop_parser/feature_en.rb
|
250
241
|
- lib/cucumber/treetop_parser/feature_es.rb
|
@@ -341,7 +332,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
341
332
|
requirements: []
|
342
333
|
|
343
334
|
rubyforge_project: rspec
|
344
|
-
rubygems_version: 1.
|
335
|
+
rubygems_version: 1.3.1
|
345
336
|
signing_key:
|
346
337
|
specification_version: 2
|
347
338
|
summary: Executable Feature scenarios
|