gherkin 2.2.5-x86-mswin32
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/.gitattributes +2 -0
- data/.gitignore +11 -0
- data/.mailmap +2 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/Gemfile +5 -0
- data/History.txt +306 -0
- data/LICENSE +20 -0
- data/README.rdoc +59 -0
- data/Rakefile +16 -0
- data/VERSION +1 -0
- data/bin/gherkin +5 -0
- data/build_native_gems.sh +8 -0
- data/cucumber.yml +3 -0
- data/features/escaped_pipes.feature +8 -0
- data/features/feature_parser.feature +237 -0
- data/features/json_formatter.feature +278 -0
- data/features/json_parser.feature +318 -0
- data/features/native_lexer.feature +19 -0
- data/features/parser_with_native_lexer.feature +205 -0
- data/features/pretty_formatter.feature +15 -0
- data/features/step_definitions/eyeball_steps.rb +3 -0
- data/features/step_definitions/gherkin_steps.rb +29 -0
- data/features/step_definitions/json_formatter_steps.rb +28 -0
- data/features/step_definitions/json_parser_steps.rb +20 -0
- data/features/step_definitions/pretty_formatter_steps.rb +82 -0
- data/features/steps_parser.feature +46 -0
- data/features/support/env.rb +38 -0
- data/gherkin.gemspec +59 -0
- data/ikvm/.gitignore +3 -0
- data/java/.gitignore +2 -0
- data/java/src/main/java/gherkin/lexer/i18n/.gitignore +1 -0
- data/java/src/main/resources/gherkin/.gitignore +1 -0
- data/lib/.gitignore +4 -0
- data/lib/gherkin.rb +2 -0
- data/lib/gherkin/c_lexer.rb +17 -0
- data/lib/gherkin/cli/main.rb +33 -0
- data/lib/gherkin/formatter/argument.rb +28 -0
- data/lib/gherkin/formatter/colors.rb +119 -0
- data/lib/gherkin/formatter/escaping.rb +15 -0
- data/lib/gherkin/formatter/filter_formatter.rb +136 -0
- data/lib/gherkin/formatter/json_formatter.rb +72 -0
- data/lib/gherkin/formatter/line_filter.rb +26 -0
- data/lib/gherkin/formatter/model.rb +231 -0
- data/lib/gherkin/formatter/monochrome_format.rb +9 -0
- data/lib/gherkin/formatter/pretty_formatter.rb +174 -0
- data/lib/gherkin/formatter/regexp_filter.rb +21 -0
- data/lib/gherkin/formatter/tag_count_formatter.rb +47 -0
- data/lib/gherkin/formatter/tag_filter.rb +19 -0
- data/lib/gherkin/i18n.rb +180 -0
- data/lib/gherkin/i18n.yml +601 -0
- data/lib/gherkin/json_parser.rb +88 -0
- data/lib/gherkin/lexer/i18n_lexer.rb +47 -0
- data/lib/gherkin/listener/event.rb +45 -0
- data/lib/gherkin/listener/formatter_listener.rb +113 -0
- data/lib/gherkin/native.rb +7 -0
- data/lib/gherkin/native/ikvm.rb +55 -0
- data/lib/gherkin/native/java.rb +55 -0
- data/lib/gherkin/native/null.rb +9 -0
- data/lib/gherkin/parser/meta.txt +5 -0
- data/lib/gherkin/parser/parser.rb +164 -0
- data/lib/gherkin/parser/root.txt +11 -0
- data/lib/gherkin/parser/steps.txt +4 -0
- data/lib/gherkin/rb_lexer.rb +8 -0
- data/lib/gherkin/rb_lexer/.gitignore +1 -0
- data/lib/gherkin/rb_lexer/README.rdoc +8 -0
- data/lib/gherkin/rubify.rb +24 -0
- data/lib/gherkin/tag_expression.rb +62 -0
- data/lib/gherkin/tools.rb +8 -0
- data/lib/gherkin/tools/files.rb +34 -0
- data/lib/gherkin/tools/reformat.rb +20 -0
- data/lib/gherkin/tools/stats.rb +20 -0
- data/lib/gherkin/tools/stats_listener.rb +60 -0
- data/lib/gherkin/version.rb +3 -0
- data/ragel/i18n/.gitignore +1 -0
- data/ragel/lexer.c.rl.erb +459 -0
- data/ragel/lexer.java.rl.erb +224 -0
- data/ragel/lexer.rb.rl.erb +179 -0
- data/ragel/lexer_common.rl.erb +50 -0
- data/spec/gherkin/c_lexer_spec.rb +21 -0
- data/spec/gherkin/fixtures/1.feature +8 -0
- data/spec/gherkin/fixtures/comments_in_table.feature +9 -0
- data/spec/gherkin/fixtures/complex.feature +45 -0
- data/spec/gherkin/fixtures/complex.json +143 -0
- data/spec/gherkin/fixtures/complex_for_filtering.feature +60 -0
- data/spec/gherkin/fixtures/complex_with_tags.feature +61 -0
- data/spec/gherkin/fixtures/dos_line_endings.feature +45 -0
- data/spec/gherkin/fixtures/hantu_pisang.feature +35 -0
- data/spec/gherkin/fixtures/i18n_fr.feature +14 -0
- data/spec/gherkin/fixtures/i18n_no.feature +7 -0
- data/spec/gherkin/fixtures/i18n_zh-CN.feature +9 -0
- data/spec/gherkin/fixtures/scenario_outline_with_tags.feature +13 -0
- data/spec/gherkin/fixtures/scenario_without_steps.feature +5 -0
- data/spec/gherkin/fixtures/simple_with_comments.feature +7 -0
- data/spec/gherkin/fixtures/simple_with_tags.feature +11 -0
- data/spec/gherkin/fixtures/with_bom.feature +3 -0
- data/spec/gherkin/formatter/argument_spec.rb +28 -0
- data/spec/gherkin/formatter/colors_spec.rb +18 -0
- data/spec/gherkin/formatter/filter_formatter_spec.rb +165 -0
- data/spec/gherkin/formatter/model_spec.rb +15 -0
- data/spec/gherkin/formatter/pretty_formatter_spec.rb +140 -0
- data/spec/gherkin/formatter/spaces.feature +9 -0
- data/spec/gherkin/formatter/tabs.feature +9 -0
- data/spec/gherkin/formatter/tag_count_formatter_spec.rb +30 -0
- data/spec/gherkin/i18n_spec.rb +149 -0
- data/spec/gherkin/java_lexer_spec.rb +20 -0
- data/spec/gherkin/json.rb +5 -0
- data/spec/gherkin/json_parser_spec.rb +67 -0
- data/spec/gherkin/lexer/i18n_lexer_spec.rb +43 -0
- data/spec/gherkin/output_stream_string_io.rb +24 -0
- data/spec/gherkin/parser/parser_spec.rb +16 -0
- data/spec/gherkin/rb_lexer_spec.rb +19 -0
- data/spec/gherkin/sexp_recorder.rb +56 -0
- data/spec/gherkin/shared/lexer_group.rb +592 -0
- data/spec/gherkin/shared/py_string_group.rb +153 -0
- data/spec/gherkin/shared/row_group.rb +120 -0
- data/spec/gherkin/shared/tags_group.rb +54 -0
- data/spec/gherkin/tag_expression_spec.rb +137 -0
- data/spec/spec_helper.rb +68 -0
- data/tasks/bench.rake +184 -0
- data/tasks/bench/feature_builder.rb +49 -0
- data/tasks/bench/generated/.gitignore +1 -0
- data/tasks/bench/null_listener.rb +4 -0
- data/tasks/compile.rake +102 -0
- data/tasks/cucumber.rake +18 -0
- data/tasks/gems.rake +42 -0
- data/tasks/ikvm.rake +54 -0
- data/tasks/ragel_task.rb +70 -0
- data/tasks/rdoc.rake +9 -0
- data/tasks/release.rake +30 -0
- data/tasks/rspec.rake +8 -0
- metadata +447 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
unless defined?(JRUBY_VERSION) || (defined?(RUBY_ENGINE) && RUBY_ENGINE == "ironruby")
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'gherkin_lexer_en'
|
5
|
+
|
6
|
+
module Gherkin
|
7
|
+
module Lexer
|
8
|
+
describe "C Lexer" do
|
9
|
+
before do
|
10
|
+
@listener = Gherkin::SexpRecorder.new
|
11
|
+
@lexer = Gherkin::CLexer::En.new(@listener)
|
12
|
+
end
|
13
|
+
|
14
|
+
it_should_behave_like "a Gherkin lexer"
|
15
|
+
it_should_behave_like "a Gherkin lexer lexing tags"
|
16
|
+
it_should_behave_like "a Gherkin lexer lexing py_strings"
|
17
|
+
it_should_behave_like "a Gherkin lexer lexing rows"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#Comment on line 1
|
2
|
+
#Comment on line 2
|
3
|
+
@tag1 @tag2
|
4
|
+
Feature: Feature Text
|
5
|
+
In order to test multiline forms
|
6
|
+
As a ragel writer
|
7
|
+
I need to check for complex combinations
|
8
|
+
|
9
|
+
#Comment on line 9
|
10
|
+
|
11
|
+
#Comment on line 11
|
12
|
+
|
13
|
+
Background:
|
14
|
+
Given this is a background step
|
15
|
+
And this is another one
|
16
|
+
|
17
|
+
@tag3 @tag4
|
18
|
+
Scenario: Reading a Scenario
|
19
|
+
Given there is a step
|
20
|
+
But not another step
|
21
|
+
|
22
|
+
@tag3
|
23
|
+
Scenario: Reading a second scenario
|
24
|
+
With two lines of text
|
25
|
+
#Comment on line 24
|
26
|
+
Given a third step with a table
|
27
|
+
|a|b|
|
28
|
+
|c|d|
|
29
|
+
|e|f|
|
30
|
+
And I am still testing things
|
31
|
+
|g|h|
|
32
|
+
|e|r|
|
33
|
+
|k|i|
|
34
|
+
|n||
|
35
|
+
And I am done testing these tables
|
36
|
+
#Comment on line 29
|
37
|
+
Then I am happy
|
38
|
+
|
39
|
+
Scenario: Hammerzeit
|
40
|
+
Given All work and no play
|
41
|
+
"""
|
42
|
+
Makes Homer something something
|
43
|
+
And something else
|
44
|
+
"""
|
45
|
+
Then crazy
|
@@ -0,0 +1,143 @@
|
|
1
|
+
{
|
2
|
+
"name": "Feature Text",
|
3
|
+
"keyword": "Feature",
|
4
|
+
"description": "In order to test multiline forms",
|
5
|
+
"tags": [
|
6
|
+
{"name": "@tag1"},
|
7
|
+
{"name": "@tag2"}
|
8
|
+
],
|
9
|
+
"elements": [
|
10
|
+
{ "type": "background",
|
11
|
+
"description": "",
|
12
|
+
"name": "",
|
13
|
+
"keyword": "Background",
|
14
|
+
"steps": [
|
15
|
+
{ "name": "this is a background step",
|
16
|
+
"keyword": "Given " },
|
17
|
+
{ "name": "this is another one",
|
18
|
+
"keyword": "When ",
|
19
|
+
"line": 412 }
|
20
|
+
]
|
21
|
+
},
|
22
|
+
{ "type": "scenario_outline",
|
23
|
+
"keyword": "Scenario Outline",
|
24
|
+
"name": "An Scenario Outline",
|
25
|
+
"description": "",
|
26
|
+
"tags": [
|
27
|
+
{"name": "@foo"}
|
28
|
+
],
|
29
|
+
"steps": [
|
30
|
+
{ "name": "A step with a table",
|
31
|
+
"keyword": "Given ",
|
32
|
+
"multiline_arg": {
|
33
|
+
"type": "table",
|
34
|
+
"value" : [
|
35
|
+
{"cells":
|
36
|
+
[ "a","row","for","a","step" ]
|
37
|
+
}
|
38
|
+
]
|
39
|
+
}
|
40
|
+
}
|
41
|
+
],
|
42
|
+
"examples": [
|
43
|
+
{
|
44
|
+
"name": "Sweet Example",
|
45
|
+
"keyword": "Examples",
|
46
|
+
"description": "",
|
47
|
+
"rows" : [
|
48
|
+
{"cells" :
|
49
|
+
[ "Fill","In" ]
|
50
|
+
},
|
51
|
+
{"cells" :
|
52
|
+
[ "The","Blanks" ]
|
53
|
+
}
|
54
|
+
],
|
55
|
+
"tags" : [ {"name": "@exampletag"} ]
|
56
|
+
}
|
57
|
+
]
|
58
|
+
},
|
59
|
+
{ "type" : "scenario",
|
60
|
+
"keyword": "Scenario",
|
61
|
+
"name" : "Reading a Scenario",
|
62
|
+
"description": "",
|
63
|
+
"tags" : [
|
64
|
+
{"name": "@tag3"},
|
65
|
+
{"name": "@tag4"}
|
66
|
+
],
|
67
|
+
"steps" : [
|
68
|
+
{ "name" : "there is a step",
|
69
|
+
"keyword": "Given "},
|
70
|
+
{ "name" : "not another step",
|
71
|
+
"keyword": "But " }
|
72
|
+
]
|
73
|
+
},
|
74
|
+
{ "type" : "scenario",
|
75
|
+
"keyword": "Scenario",
|
76
|
+
"name" : "Reading a second scenario",
|
77
|
+
"description": "With two lines of text",
|
78
|
+
"tags" : [ {"name": "@tag3"} ],
|
79
|
+
"steps" : [
|
80
|
+
{ "name" : "a third step with a table",
|
81
|
+
"keyword": "Given ",
|
82
|
+
"multiline_arg": {
|
83
|
+
"type": "table",
|
84
|
+
"value": [
|
85
|
+
{
|
86
|
+
"cells" : [ "a","b" ],
|
87
|
+
"line" : 987
|
88
|
+
},
|
89
|
+
{ "cells" :
|
90
|
+
[ "c","d" ]
|
91
|
+
},
|
92
|
+
{ "cells" :
|
93
|
+
[ "e", "f" ]
|
94
|
+
}
|
95
|
+
]
|
96
|
+
}
|
97
|
+
},
|
98
|
+
{ "name" : "I am still testing things",
|
99
|
+
"keyword": "Given ",
|
100
|
+
"multiline_arg": {
|
101
|
+
"type": "table",
|
102
|
+
"value": [
|
103
|
+
{ "cells" :
|
104
|
+
[ "g","h" ]
|
105
|
+
},
|
106
|
+
{ "cells" :
|
107
|
+
[ "e","r" ]
|
108
|
+
},
|
109
|
+
{ "cells" :
|
110
|
+
[ "k", "i" ]
|
111
|
+
},
|
112
|
+
{ "cells" :
|
113
|
+
[ "n", "" ]
|
114
|
+
}
|
115
|
+
]
|
116
|
+
}
|
117
|
+
},
|
118
|
+
{ "name" : "I am done testing these tables",
|
119
|
+
"keyword": "Given " },
|
120
|
+
{ "name" : "I am happy",
|
121
|
+
"keyword": "Given " }
|
122
|
+
]
|
123
|
+
},
|
124
|
+
{ "type" : "scenario",
|
125
|
+
"keyword": "Scenario",
|
126
|
+
"name" : "Hammerzeit",
|
127
|
+
"description": "",
|
128
|
+
"steps" : [
|
129
|
+
{ "name" : "All work and no play",
|
130
|
+
"keyword": "Given ",
|
131
|
+
"multiline_arg": {
|
132
|
+
"type": "py_string",
|
133
|
+
"value": "Makes Homer something something\nAnd something else",
|
134
|
+
"line": 777
|
135
|
+
}
|
136
|
+
},
|
137
|
+
{ "name" : "crazy",
|
138
|
+
"keyword": "Given " }
|
139
|
+
]
|
140
|
+
}
|
141
|
+
]
|
142
|
+
}
|
143
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#Comment on line 1
|
2
|
+
#Comment on line 2
|
3
|
+
@tag1 @tag2
|
4
|
+
Feature: Feature Text
|
5
|
+
In order to test multiline forms
|
6
|
+
As a ragel writer
|
7
|
+
I need to check for complex combinations
|
8
|
+
|
9
|
+
#Comment on line 9
|
10
|
+
#Comment on line 11
|
11
|
+
Background:
|
12
|
+
Given this is a background step
|
13
|
+
And this is another one
|
14
|
+
|
15
|
+
@tag3 @tag4
|
16
|
+
Scenario: Reading a Scenario
|
17
|
+
Given there is a step
|
18
|
+
But not another step
|
19
|
+
|
20
|
+
@tag3
|
21
|
+
Scenario: Reading a second scenario
|
22
|
+
With two lines of text
|
23
|
+
|
24
|
+
#Comment on line 24
|
25
|
+
Given a third step with a table
|
26
|
+
| a | b |
|
27
|
+
| c | d |
|
28
|
+
| e | f |
|
29
|
+
And I am still testing things
|
30
|
+
And I am done testing these tables
|
31
|
+
#Comment on line 29
|
32
|
+
Then I am happy
|
33
|
+
| g | h |
|
34
|
+
| e | r |
|
35
|
+
| k | i |
|
36
|
+
| n | |
|
37
|
+
|
38
|
+
Scenario: Hammerzeit XX
|
39
|
+
Given All work and no play
|
40
|
+
Then crazy
|
41
|
+
"""
|
42
|
+
Makes Homer something something
|
43
|
+
And something else
|
44
|
+
"""
|
45
|
+
|
46
|
+
@more
|
47
|
+
Scenario Outline: More
|
48
|
+
Given Some <whaaa>
|
49
|
+
|
50
|
+
@neat
|
51
|
+
Examples: Neato XX
|
52
|
+
| whaa |
|
53
|
+
| neat |
|
54
|
+
| beat |
|
55
|
+
|
56
|
+
@hamster
|
57
|
+
Examples: Rodents
|
58
|
+
| whaa |
|
59
|
+
| hammy |
|
60
|
+
| mousy |
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#Comment on line 1
|
2
|
+
#Comment on line 2
|
3
|
+
@tag1 @tag2
|
4
|
+
Feature: Feature Text
|
5
|
+
In order to test multiline forms
|
6
|
+
As a ragel writer
|
7
|
+
I need to check for complex combinations
|
8
|
+
|
9
|
+
#Comment on line 9
|
10
|
+
|
11
|
+
#Comment on line 11
|
12
|
+
|
13
|
+
Background:
|
14
|
+
Given this is a background step
|
15
|
+
And this is another one
|
16
|
+
|
17
|
+
@tag3 @tag4
|
18
|
+
Scenario: Reading a Scenario
|
19
|
+
Given there is a step
|
20
|
+
But not another step
|
21
|
+
|
22
|
+
@tag3
|
23
|
+
Scenario: Reading a second scenario
|
24
|
+
With two lines of text
|
25
|
+
#Comment on line 24
|
26
|
+
Given a third step with a table
|
27
|
+
|a|b|
|
28
|
+
|c|d|
|
29
|
+
|e|f|
|
30
|
+
And I am still testing things
|
31
|
+
|g|h|
|
32
|
+
|e|r|
|
33
|
+
|k|i|
|
34
|
+
|n||
|
35
|
+
And I am done testing these tables
|
36
|
+
#Comment on line 29
|
37
|
+
Then I am happy
|
38
|
+
|
39
|
+
Scenario: Hammerzeit
|
40
|
+
Given All work and no play
|
41
|
+
"""
|
42
|
+
Makes Homer something something
|
43
|
+
And something else
|
44
|
+
"""
|
45
|
+
Then crazy
|
46
|
+
|
47
|
+
@more
|
48
|
+
Scenario Outline: More
|
49
|
+
Given Some <whaaa>
|
50
|
+
|
51
|
+
@neat
|
52
|
+
Examples: Neato
|
53
|
+
|whaa|
|
54
|
+
|neat|
|
55
|
+
|beat|
|
56
|
+
|
57
|
+
@hamster
|
58
|
+
Examples: Rodents
|
59
|
+
|whaa|
|
60
|
+
|hammy|
|
61
|
+
|mousy|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#Comment on line 1
|
2
|
+
#Comment on line 2
|
3
|
+
@tag1 @tag2
|
4
|
+
Feature: Feature Text
|
5
|
+
In order to test multiline forms
|
6
|
+
As a ragel writer
|
7
|
+
I need to check for complex combinations
|
8
|
+
|
9
|
+
#Comment on line 9
|
10
|
+
|
11
|
+
#Comment on line 11
|
12
|
+
|
13
|
+
Background:
|
14
|
+
Given this is a background step
|
15
|
+
And this is another one
|
16
|
+
|
17
|
+
@tag3 @tag4
|
18
|
+
Scenario: Reading a Scenario
|
19
|
+
Given there is a step
|
20
|
+
But not another step
|
21
|
+
|
22
|
+
@tag3
|
23
|
+
Scenario: Reading a second scenario
|
24
|
+
With two lines of text
|
25
|
+
#Comment on line 24
|
26
|
+
Given a third step with a table
|
27
|
+
|a|b|
|
28
|
+
|c|d|
|
29
|
+
|e|f|
|
30
|
+
And I am still testing things
|
31
|
+
|g|h|
|
32
|
+
|e|r|
|
33
|
+
|k|i|
|
34
|
+
|n||
|
35
|
+
And I am done testing these tables
|
36
|
+
#Comment on line 29
|
37
|
+
Then I am happy
|
38
|
+
|
39
|
+
Scenario: Hammerzeit
|
40
|
+
Given All work and no play
|
41
|
+
"""
|
42
|
+
Makes Homer something something
|
43
|
+
And something else
|
44
|
+
"""
|
45
|
+
Then crazy
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Feature: search examples
|
2
|
+
|
3
|
+
Background: The background
|
4
|
+
Given passing without a table
|
5
|
+
|
6
|
+
Scenario: should match Hantu Pisang
|
7
|
+
Given passing without a table
|
8
|
+
|
9
|
+
Scenario: Ignore me
|
10
|
+
Given failing without a table
|
11
|
+
|
12
|
+
Scenario Outline: Ignore me
|
13
|
+
Given <state> without a table
|
14
|
+
|
15
|
+
Examples:
|
16
|
+
| state |
|
17
|
+
| 1111111 |
|
18
|
+
|
19
|
+
Scenario Outline: Hantu Pisang match
|
20
|
+
Given <state> without a table
|
21
|
+
|
22
|
+
Examples:
|
23
|
+
| state |
|
24
|
+
| 2222222 |
|
25
|
+
|
26
|
+
Scenario Outline: no match in name but in examples
|
27
|
+
Given <state> without a table
|
28
|
+
|
29
|
+
Examples: Hantu Pisang
|
30
|
+
| state |
|
31
|
+
| 3333333 |
|
32
|
+
|
33
|
+
Examples: Ignore me
|
34
|
+
| state |
|
35
|
+
| 4444444 |
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#language:fr
|
2
|
+
Fonctionnalité: Addition
|
3
|
+
Plan du scénario: Addition de produits dérivés
|
4
|
+
Soit une calculatrice
|
5
|
+
Etant donné qu'on tape <a>
|
6
|
+
Et qu'on tape <b>
|
7
|
+
Lorsqu'on tape additionner
|
8
|
+
Alors le résultat doit être <somme>
|
9
|
+
|
10
|
+
Exemples:
|
11
|
+
| a | b | somme |
|
12
|
+
| 2 | 2 | 4 |
|
13
|
+
| 2 | 3 | 5 |
|
14
|
+
|