cucumber 0.1.6 → 0.1.7
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 +53 -0
- data/Manifest.txt +4 -0
- data/Rakefile +1 -0
- data/examples/calculator/cucumber.yml +1 -1
- data/examples/dos_line_endings/Rakefile +6 -0
- data/examples/dos_line_endings/features/dos_line_endings.feature +9 -0
- data/examples/tickets/features/steps/tickets_steps.rb +13 -1
- data/examples/tickets/features/tickets.feature +5 -1
- data/gem_tasks/treetop.rake +10 -0
- data/generators/cucumber/templates/common_webrat.rb +1 -1
- data/lib/cucumber.rb +3 -1
- data/lib/cucumber/cli.rb +16 -15
- data/lib/cucumber/core_ext/proc.rb +11 -2
- data/lib/cucumber/executor.rb +32 -15
- data/lib/cucumber/formatters/ansicolor.rb +25 -3
- data/lib/cucumber/formatters/pretty_formatter.rb +44 -15
- data/lib/cucumber/languages.yml +10 -0
- data/lib/cucumber/step_methods.rb +8 -4
- data/lib/cucumber/step_mother.rb +4 -3
- data/lib/cucumber/tree/scenario.rb +22 -10
- data/lib/cucumber/tree/step.rb +9 -1
- data/lib/cucumber/treetop_parser/feature.treetop.erb +5 -5
- data/lib/cucumber/treetop_parser/feature_da.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_de.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_en.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_es.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_et.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_fr.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_no.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_parser.rb +4 -2
- data/lib/cucumber/treetop_parser/feature_pt.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_ru.rb +146 -108
- data/lib/cucumber/treetop_parser/feature_se.rb +146 -108
- data/lib/cucumber/version.rb +1 -1
- data/spec/cucumber/cli_spec.rb +14 -4
- data/spec/cucumber/executor_spec.rb +4 -3
- data/spec/cucumber/formatters/ansicolor_spec.rb +4 -0
- data/spec/cucumber/formatters/pretty_formatter_spec.rb +67 -2
- data/spec/cucumber/tree/scenario_spec.rb +2 -2
- data/spec/cucumber/tree/step_spec.rb +21 -0
- data/spec/cucumber/treetop_parser/feature_parser_spec.rb +5 -0
- data/spec/cucumber/treetop_parser/test_dos.feature +24 -0
- data/spec/spec_helper.rb +1 -7
- metadata +6 -2
data/lib/cucumber/version.rb
CHANGED
data/spec/cucumber/cli_spec.rb
CHANGED
@@ -9,12 +9,13 @@ module Cucumber
|
|
9
9
|
cucumber_yml = {'bongo' => '--require from/yml'}.to_yaml
|
10
10
|
IO.should_receive(:read).with('cucumber.yml').and_return(cucumber_yml)
|
11
11
|
|
12
|
-
cli.parse_options!(%w{--format
|
12
|
+
cli.parse_options!(%w{--format progress --profile bongo})
|
13
13
|
cli.options.should == {
|
14
|
-
:format => '
|
14
|
+
:format => 'progress',
|
15
15
|
:require => ['from/yml'],
|
16
16
|
:dry_run => false,
|
17
|
-
:lang => 'en'
|
17
|
+
:lang => 'en',
|
18
|
+
:source => true
|
18
19
|
}
|
19
20
|
end
|
20
21
|
|
@@ -29,8 +30,17 @@ module Cucumber
|
|
29
30
|
:format => 'pretty',
|
30
31
|
:require => ['from/yml'],
|
31
32
|
:dry_run => false,
|
32
|
-
:lang => 'en'
|
33
|
+
:lang => 'en',
|
34
|
+
:source => true
|
33
35
|
}
|
34
36
|
end
|
37
|
+
|
38
|
+
it "should accept source option" do
|
39
|
+
cli = CLI.new
|
40
|
+
cli.parse_options!(%w{--no-source})
|
41
|
+
|
42
|
+
cli.options[:source].should be_false
|
43
|
+
end
|
44
|
+
|
35
45
|
end
|
36
46
|
end
|
@@ -5,9 +5,10 @@ module Cucumber
|
|
5
5
|
describe Executor do
|
6
6
|
before do # TODO: Way more setup and duplication of lib code. Use lib code!
|
7
7
|
@io = StringIO.new
|
8
|
-
@formatter = Formatters::ProgressFormatter.new(@io)
|
9
8
|
@step_mother = StepMother.new
|
10
|
-
@executor = Executor.new(@
|
9
|
+
@executor = Executor.new(@step_mother)
|
10
|
+
@formatter = Formatters::ProgressFormatter.new(@io)
|
11
|
+
@executor.formatter = @formatter
|
11
12
|
@feature_file = File.dirname(__FILE__) + '/sell_cucumbers.feature'
|
12
13
|
@parser = TreetopParser::FeatureParser.new
|
13
14
|
@features = Tree::Features.new
|
@@ -37,7 +38,7 @@ STDOUT
|
|
37
38
|
|
38
39
|
1)
|
39
40
|
dang
|
40
|
-
#{__FILE__}:
|
41
|
+
#{__FILE__}:34:in `Then /I should owe (\\d*) cucumbers/'
|
41
42
|
#{@feature_file}:9:in `Then I should owe 7 cucumbers'
|
42
43
|
\e[0m
|
43
44
|
STDOUT
|
@@ -13,6 +13,10 @@ module Cucumber
|
|
13
13
|
it "should return bold green without wrapping for #passed without arg" do
|
14
14
|
passed.should == "\e[0m\e[1m\e[32m"
|
15
15
|
end
|
16
|
+
|
17
|
+
it "should return grey for #comment" do
|
18
|
+
comment("foo").should == "\e[0m\e[90mfoo\e[0m"
|
19
|
+
end
|
16
20
|
|
17
21
|
it "should not generate ansi codes when colors are disabled" do
|
18
22
|
ENV['CUCUMBER_COLORS_DISABLED'] = '1'
|
@@ -3,15 +3,80 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
3
3
|
module Cucumber
|
4
4
|
module Formatters
|
5
5
|
describe PrettyFormatter do
|
6
|
+
|
7
|
+
def mock_step(stubs={})
|
8
|
+
stub('step', {
|
9
|
+
:keyword => 'Given',
|
10
|
+
:format => 'formatted yes',
|
11
|
+
:name => 'example',
|
12
|
+
:error => nil,
|
13
|
+
:row? => false}.merge(stubs))
|
14
|
+
end
|
15
|
+
|
16
|
+
def mock_error(stubs={})
|
17
|
+
stub('error', {
|
18
|
+
:message => 'failed',
|
19
|
+
:backtrace => 'example backtrace'}.merge(stubs))
|
20
|
+
end
|
21
|
+
|
22
|
+
def mock_proc
|
23
|
+
stub(Proc, :to_comment_line => '# steps/example_steps.rb:11')
|
24
|
+
end
|
25
|
+
|
6
26
|
it "should print step file and line when passed" do
|
7
27
|
io = StringIO.new
|
8
|
-
formatter = PrettyFormatter.new io
|
28
|
+
formatter = PrettyFormatter.new io, StepMother.new
|
9
29
|
step = stub('step',
|
10
30
|
:error => nil, :row? => false, :keyword => 'Given', :format => 'formatted yes'
|
11
31
|
)
|
12
|
-
formatter.step_passed(step,nil,nil)
|
32
|
+
formatter.step_passed(step, nil, nil)
|
13
33
|
io.string.should == " Given formatted yes\n"
|
14
34
|
end
|
35
|
+
|
36
|
+
describe "show source option true" do
|
37
|
+
|
38
|
+
%w{passed failed skipped}.each do |result|
|
39
|
+
it "should display step source for passed step" do
|
40
|
+
io = StringIO.new
|
41
|
+
|
42
|
+
step_mother = mock('step_mother')
|
43
|
+
formatter = PrettyFormatter.new io, step_mother, :source => true
|
44
|
+
formatter.send("step_#{result}".to_sym, mock_step(:regexp_args_proc => [nil, nil, mock_proc], :error => StandardError.new, :padding_length => 2), nil, nil)
|
45
|
+
|
46
|
+
io.string.should include("Given formatted yes # steps/example_steps.rb:11")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should align step comments" do
|
51
|
+
io = StringIO.new
|
52
|
+
|
53
|
+
step_1 = mock_step(:regexp_args_proc => [nil, nil, mock_proc], :format => "1", :padding_length => 10)
|
54
|
+
step_4 = mock_step(:regexp_args_proc => [nil, nil, mock_proc], :format => "4444", :padding_length => 7)
|
55
|
+
step_9 = mock_step(:regexp_args_proc => [nil, nil, mock_proc], :format => "999999999", :padding_length => 2)
|
56
|
+
|
57
|
+
step_mother = mock('step_mother')
|
58
|
+
formatter = PrettyFormatter.new io, step_mother, :source => true
|
59
|
+
|
60
|
+
formatter.step_passed(step_1, nil, nil)
|
61
|
+
formatter.step_passed(step_4, nil, nil)
|
62
|
+
formatter.step_passed(step_9, nil, nil)
|
63
|
+
|
64
|
+
io.string.should include("Given 1 # steps/example_steps.rb:11")
|
65
|
+
io.string.should include("Given 4444 # steps/example_steps.rb:11")
|
66
|
+
io.string.should include("Given 999999999 # steps/example_steps.rb:11")
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should NOT display step source for pending step" do
|
70
|
+
io = StringIO.new
|
71
|
+
step_mother = mock('step_mother')
|
72
|
+
|
73
|
+
formatter = PrettyFormatter.new io, step_mother, :source => true
|
74
|
+
formatter.step_pending(mock_step(:regexp_args_proc => [nil, nil, mock_proc]), nil, nil)
|
75
|
+
|
76
|
+
io.string.should_not include("steps/example_steps.rb:11")
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
15
80
|
end
|
16
81
|
end
|
17
82
|
end
|
@@ -6,8 +6,8 @@ module Cucumber
|
|
6
6
|
xit "should reuse steps in GivenScenario" do
|
7
7
|
given_scenario = GivenScenario.new(scenario_2, "First", 99)
|
8
8
|
|
9
|
-
scenario_2.
|
10
|
-
scenario_2.
|
9
|
+
scenario_2.create_step(given_scenario)
|
10
|
+
scenario_2.create_step(step_a)
|
11
11
|
scenario_2.steps.should == [step_1, step_2, step_a]
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Tree
|
5
|
+
describe Step do
|
6
|
+
it "should have padding_length 2 when alone" do
|
7
|
+
scenario = Scenario.new(nil, nil)
|
8
|
+
step = scenario.create_step('Given', '666666', 98)
|
9
|
+
step.padding_length.should == 2
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should have padding_length 5 when 3 shorter" do
|
13
|
+
scenario = Scenario.new(nil, nil)
|
14
|
+
long = scenario.create_step('Given', '999999999', 80)
|
15
|
+
step = scenario.create_step('Given', '666666', 98)
|
16
|
+
step.padding_length.should == 5
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -68,6 +68,11 @@ module Cucumber
|
|
68
68
|
f.should have(0).scenarios
|
69
69
|
end
|
70
70
|
|
71
|
+
it "should parse features with dos line endings" do
|
72
|
+
p = FeatureParser.new
|
73
|
+
f = p.parse_feature(File.dirname(__FILE__) + '/test_dos.feature')
|
74
|
+
f.should have(5).scenarios
|
75
|
+
end
|
71
76
|
end
|
72
77
|
end
|
73
78
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Feature: Search
|
2
|
+
In order to learn cucumber
|
3
|
+
As an engineer
|
4
|
+
I want to run some simple tests
|
5
|
+
|
6
|
+
Scenario: 1) Reverse a String
|
7
|
+
Given a string "abc"
|
8
|
+
When the string is reversed
|
9
|
+
Then the string should be "cba"
|
10
|
+
|
11
|
+
|input |output|
|
12
|
+
|a |a |
|
13
|
+
|ab |ba |
|
14
|
+
|
15
|
+
Scenario: 2) Upcase a String
|
16
|
+
Given a string "abc"
|
17
|
+
When the string is upcased
|
18
|
+
Then the string should be "ABC"
|
19
|
+
|
20
|
+
Scenario: 3) Combining 2 Methods
|
21
|
+
Given a string "abc"
|
22
|
+
When the string is upcased
|
23
|
+
And the string is reversed
|
24
|
+
Then the string should be "CBA"
|
data/spec/spec_helper.rb
CHANGED
@@ -5,13 +5,7 @@ require 'spec'
|
|
5
5
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
6
6
|
require 'cucumber'
|
7
7
|
require 'cucumber/treetop_parser/feature_en'
|
8
|
-
|
9
|
-
# Prevent CLI's exit hook from running
|
10
|
-
class Cucumber::CLI
|
11
|
-
def self.execute_called?
|
12
|
-
true
|
13
|
-
end
|
14
|
-
end
|
8
|
+
Cucumber.load_language('en')
|
15
9
|
|
16
10
|
# Open up the tree classes a little for easier inspection.
|
17
11
|
module Cucumber
|
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.7
|
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-10-
|
12
|
+
date: 2008-10-05 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -109,6 +109,8 @@ files:
|
|
109
109
|
- examples/danish_calculator/features/steps/kalkulator_steps.rb
|
110
110
|
- examples/danish_calculator/features/summering.feature
|
111
111
|
- examples/danish_calculator/lib/kalkulator.rb
|
112
|
+
- examples/dos_line_endings/Rakefile
|
113
|
+
- examples/dos_line_endings/features/dos_line_endings.feature
|
112
114
|
- examples/estonian_calculator/Rakefile
|
113
115
|
- examples/estonian_calculator/features/kalkulaator_steps.rb
|
114
116
|
- examples/estonian_calculator/features/liitmine.feature
|
@@ -218,6 +220,7 @@ files:
|
|
218
220
|
- spec/cucumber/sell_cucumbers.feature
|
219
221
|
- spec/cucumber/step_mother_spec.rb
|
220
222
|
- spec/cucumber/tree/scenario_spec.rb
|
223
|
+
- spec/cucumber/tree/step_spec.rb
|
221
224
|
- spec/cucumber/treetop_parser/empty_feature.feature
|
222
225
|
- spec/cucumber/treetop_parser/empty_scenario.feature
|
223
226
|
- spec/cucumber/treetop_parser/feature_parser_spec.rb
|
@@ -225,6 +228,7 @@ files:
|
|
225
228
|
- spec/cucumber/treetop_parser/given_scenario.feature
|
226
229
|
- spec/cucumber/treetop_parser/multiple_tables.feature
|
227
230
|
- spec/cucumber/treetop_parser/spaces.feature
|
231
|
+
- spec/cucumber/treetop_parser/test_dos.feature
|
228
232
|
- spec/cucumber/treetop_parser/with_comments.feature
|
229
233
|
- spec/spec.opts
|
230
234
|
- spec/spec_helper.rb
|