cucumber-cucumber-expressions 10.2.0 → 11.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rsync +1 -0
- data/VERSION +1 -1
- data/cucumber-cucumber-expressions.gemspec +2 -2
- data/default.mk +12 -0
- data/examples.txt +13 -1
- data/lib/cucumber/cucumber_expressions/ast.rb +201 -0
- data/lib/cucumber/cucumber_expressions/cucumber_expression.rb +80 -76
- data/lib/cucumber/cucumber_expressions/cucumber_expression_generator.rb +4 -8
- data/lib/cucumber/cucumber_expressions/cucumber_expression_parser.rb +219 -0
- data/lib/cucumber/cucumber_expressions/cucumber_expression_tokenizer.rb +95 -0
- data/lib/cucumber/cucumber_expressions/errors.rb +175 -4
- data/lib/cucumber/cucumber_expressions/group.rb +1 -1
- data/lib/cucumber/cucumber_expressions/parameter_type.rb +12 -7
- data/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb +2 -2
- data/lib/cucumber/cucumber_expressions/parameter_type_registry.rb +1 -1
- data/lib/cucumber/cucumber_expressions/tree_regexp.rb +53 -46
- data/spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb +24 -0
- data/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb +73 -124
- data/spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb +24 -0
- data/spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb +1 -1
- data/spec/cucumber/cucumber_expressions/expression_examples_spec.rb +1 -1
- data/spec/cucumber/cucumber_expressions/expression_factory_spec.rb +0 -4
- data/spec/cucumber/cucumber_expressions/tree_regexp_spec.rb +58 -5
- data/testdata/ast/alternation-followed-by-optional.yaml +17 -0
- data/testdata/ast/alternation-phrase.yaml +16 -0
- data/testdata/ast/alternation-with-parameter.yaml +27 -0
- data/testdata/ast/alternation-with-unused-end-optional.yaml +15 -0
- data/testdata/ast/alternation-with-unused-start-optional.yaml +8 -0
- data/testdata/ast/alternation-with-white-space.yaml +12 -0
- data/testdata/ast/alternation.yaml +12 -0
- data/testdata/ast/anonymous-parameter.yaml +5 -0
- data/testdata/ast/closing-brace.yaml +5 -0
- data/testdata/ast/closing-parenthesis.yaml +5 -0
- data/testdata/ast/empty-alternation.yaml +8 -0
- data/testdata/ast/empty-alternations.yaml +9 -0
- data/testdata/ast/empty-string.yaml +3 -0
- data/testdata/ast/escaped-alternation.yaml +5 -0
- data/testdata/ast/escaped-backslash.yaml +5 -0
- data/testdata/ast/escaped-opening-parenthesis.yaml +5 -0
- data/testdata/ast/escaped-optional-followed-by-optional.yaml +15 -0
- data/testdata/ast/escaped-optional-phrase.yaml +10 -0
- data/testdata/ast/escaped-optional.yaml +7 -0
- data/testdata/ast/opening-brace.yaml +8 -0
- data/testdata/ast/opening-parenthesis.yaml +8 -0
- data/testdata/ast/optional-containing-nested-optional.yaml +15 -0
- data/testdata/ast/optional-phrase.yaml +12 -0
- data/testdata/ast/optional.yaml +7 -0
- data/testdata/ast/parameter.yaml +7 -0
- data/testdata/ast/phrase.yaml +9 -0
- data/testdata/ast/unfinished-parameter.yaml +8 -0
- data/testdata/expression/allows-escaped-optional-parameter-types.yaml +4 -0
- data/testdata/expression/allows-parameter-type-in-alternation-1.yaml +4 -0
- data/testdata/expression/allows-parameter-type-in-alternation-2.yaml +4 -0
- data/testdata/expression/does-allow-parameter-adjacent-to-alternation.yaml +5 -0
- data/testdata/expression/does-not-allow-alternation-in-optional.yaml +9 -0
- data/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-left-parameter.yaml +10 -0
- data/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-optional.yaml +9 -0
- data/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-right-parameter.yaml +9 -0
- data/testdata/expression/does-not-allow-alternation-with-empty-alternative.yaml +9 -0
- data/testdata/expression/does-not-allow-empty-optional.yaml +9 -0
- data/testdata/expression/does-not-allow-nested-optional.yaml +8 -0
- data/testdata/expression/does-not-allow-optional-parameter-types.yaml +9 -0
- data/testdata/expression/does-not-allow-parameter-name-with-reserved-characters.yaml +10 -0
- data/testdata/expression/does-not-allow-unfinished-parenthesis-1.yaml +8 -0
- data/testdata/expression/does-not-allow-unfinished-parenthesis-2.yaml +8 -0
- data/testdata/expression/does-not-allow-unfinished-parenthesis-3.yaml +8 -0
- data/testdata/expression/does-not-match-misquoted-string.yaml +4 -0
- data/testdata/expression/doesnt-match-float-as-int.yaml +5 -0
- data/testdata/expression/matches-alternation.yaml +4 -0
- data/testdata/expression/matches-anonymous-parameter-type.yaml +5 -0
- data/testdata/expression/matches-double-quoted-empty-string-as-empty-string-along-with-other-strings.yaml +4 -0
- data/testdata/expression/matches-double-quoted-empty-string-as-empty-string.yaml +4 -0
- data/testdata/expression/matches-double-quoted-string-with-escaped-double-quote.yaml +4 -0
- data/testdata/expression/matches-double-quoted-string-with-single-quotes.yaml +4 -0
- data/testdata/expression/matches-double-quoted-string.yaml +4 -0
- data/testdata/expression/matches-doubly-escaped-parenthesis.yaml +4 -0
- data/testdata/expression/matches-doubly-escaped-slash-1.yaml +4 -0
- data/testdata/expression/matches-doubly-escaped-slash-2.yaml +4 -0
- data/testdata/expression/matches-escaped-parenthesis-1.yaml +4 -0
- data/testdata/expression/matches-escaped-parenthesis-2.yaml +4 -0
- data/testdata/expression/matches-escaped-parenthesis-3.yaml +4 -0
- data/testdata/expression/matches-escaped-slash.yaml +4 -0
- data/testdata/expression/matches-float-1.yaml +5 -0
- data/testdata/expression/matches-float-2.yaml +5 -0
- data/testdata/expression/matches-int.yaml +5 -0
- data/testdata/expression/matches-multiple-double-quoted-strings.yaml +4 -0
- data/testdata/expression/matches-multiple-single-quoted-strings.yaml +4 -0
- data/testdata/expression/matches-optional-before-alternation-1.yaml +4 -0
- data/testdata/expression/matches-optional-before-alternation-2.yaml +4 -0
- data/testdata/expression/matches-optional-before-alternation-with-regex-characters-1.yaml +4 -0
- data/testdata/expression/matches-optional-before-alternation-with-regex-characters-2.yaml +4 -0
- data/testdata/expression/matches-optional-in-alternation-1.yaml +5 -0
- data/testdata/expression/matches-optional-in-alternation-2.yaml +5 -0
- data/testdata/expression/matches-optional-in-alternation-3.yaml +5 -0
- data/testdata/expression/matches-single-quoted-empty-string-as-empty-string-along-with-other-strings.yaml +4 -0
- data/testdata/expression/matches-single-quoted-empty-string-as-empty-string.yaml +4 -0
- data/testdata/expression/matches-single-quoted-string-with-double-quotes.yaml +4 -0
- data/testdata/expression/matches-single-quoted-string-with-escaped-single-quote.yaml +4 -0
- data/testdata/expression/matches-single-quoted-string.yaml +4 -0
- data/testdata/expression/matches-word.yaml +4 -0
- data/testdata/expression/throws-unknown-parameter-type.yaml +10 -0
- data/testdata/regex/alternation-with-optional.yaml +2 -0
- data/testdata/regex/alternation.yaml +2 -0
- data/testdata/regex/empty.yaml +2 -0
- data/testdata/regex/escape-regex-characters.yaml +2 -0
- data/testdata/regex/optional.yaml +2 -0
- data/testdata/regex/parameter.yaml +2 -0
- data/testdata/regex/text.yaml +2 -0
- data/testdata/regex/unicode.yaml +2 -0
- data/testdata/tokens/alternation-phrase.yaml +13 -0
- data/testdata/tokens/alternation.yaml +9 -0
- data/testdata/tokens/empty-string.yaml +6 -0
- data/testdata/tokens/escape-non-reserved-character.yaml +8 -0
- data/testdata/tokens/escaped-alternation.yaml +9 -0
- data/testdata/tokens/escaped-char-has-start-index-of-text-token.yaml +9 -0
- data/testdata/tokens/escaped-end-of-line.yaml +8 -0
- data/testdata/tokens/escaped-optional.yaml +7 -0
- data/testdata/tokens/escaped-parameter.yaml +7 -0
- data/testdata/tokens/escaped-space.yaml +7 -0
- data/testdata/tokens/optional-phrase.yaml +13 -0
- data/testdata/tokens/optional.yaml +9 -0
- data/testdata/tokens/parameter-phrase.yaml +13 -0
- data/testdata/tokens/parameter.yaml +9 -0
- data/testdata/tokens/phrase.yaml +11 -0
- metadata +118 -13
- data/spec/cucumber/cucumber_expressions/cucumber_expression_regexp_spec.rb +0 -57
@@ -0,0 +1,9 @@
|
|
1
|
+
expression: three( brown/black) mice
|
2
|
+
text: three brown/black mice
|
3
|
+
exception: |-
|
4
|
+
This Cucumber Expression has a problem at column 13:
|
5
|
+
|
6
|
+
three( brown/black) mice
|
7
|
+
^
|
8
|
+
An alternation can not be used inside an optional.
|
9
|
+
You can use '\/' to escape the the '/'
|
data/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-optional.yaml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
expression: three (brown)/black mice
|
2
|
+
text: three brown mice
|
3
|
+
exception: |-
|
4
|
+
This Cucumber Expression has a problem at column 7:
|
5
|
+
|
6
|
+
three (brown)/black mice
|
7
|
+
^-----^
|
8
|
+
An alternative may not exclusively contain optionals.
|
9
|
+
If you did not mean to use an optional you can use '\(' to escape the the '('
|
@@ -0,0 +1,9 @@
|
|
1
|
+
expression: three brown//black mice
|
2
|
+
text: three brown mice
|
3
|
+
exception: |-
|
4
|
+
This Cucumber Expression has a problem at column 13:
|
5
|
+
|
6
|
+
three brown//black mice
|
7
|
+
^
|
8
|
+
Alternative may not be empty.
|
9
|
+
If you did not mean to use an alternative you can use '\/' to escape the the '/'
|
@@ -0,0 +1,8 @@
|
|
1
|
+
expression: "(a(b))"
|
2
|
+
exception: |-
|
3
|
+
This Cucumber Expression has a problem at column 3:
|
4
|
+
|
5
|
+
(a(b))
|
6
|
+
^-^
|
7
|
+
An optional may not contain an other optional.
|
8
|
+
If you did not mean to use an optional type you can use '\(' to escape the the '('. For more complicated expressions consider using a regular expression instead.
|
@@ -0,0 +1,8 @@
|
|
1
|
+
expression: three (exceptionally\) {string\} mice
|
2
|
+
exception: |-
|
3
|
+
This Cucumber Expression has a problem at column 24:
|
4
|
+
|
5
|
+
three (exceptionally\) {string\} mice
|
6
|
+
^
|
7
|
+
The '{' does not have a matching '}'.
|
8
|
+
If you did not intend to use a parameter you can use '\{' to escape the a parameter
|
@@ -0,0 +1,8 @@
|
|
1
|
+
expression: three (exceptionally\) {string} mice
|
2
|
+
exception: |-
|
3
|
+
This Cucumber Expression has a problem at column 7:
|
4
|
+
|
5
|
+
three (exceptionally\) {string} mice
|
6
|
+
^
|
7
|
+
The '(' does not have a matching ')'.
|
8
|
+
If you did not intend to use optional text you can use '\(' to escape the optional text
|
@@ -0,0 +1,8 @@
|
|
1
|
+
expression: three ((exceptionally\) strong) mice
|
2
|
+
exception: |-
|
3
|
+
This Cucumber Expression has a problem at column 7:
|
4
|
+
|
5
|
+
three ((exceptionally\) strong) mice
|
6
|
+
^
|
7
|
+
The '(' does not have a matching ')'.
|
8
|
+
If you did not intend to use optional text you can use '\(' to escape the optional text
|
@@ -0,0 +1,13 @@
|
|
1
|
+
expression: three blind/cripple mice
|
2
|
+
expected: |-
|
3
|
+
[
|
4
|
+
{"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
|
5
|
+
{"type": "TEXT", "start": 0, "end": 5, "text": "three"},
|
6
|
+
{"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
|
7
|
+
{"type": "TEXT", "start": 6, "end": 11, "text": "blind"},
|
8
|
+
{"type": "ALTERNATION", "start": 11, "end": 12, "text": "/"},
|
9
|
+
{"type": "TEXT", "start": 12, "end": 19, "text": "cripple"},
|
10
|
+
{"type": "WHITE_SPACE", "start": 19, "end": 20, "text": " "},
|
11
|
+
{"type": "TEXT", "start": 20, "end": 24, "text": "mice"},
|
12
|
+
{"type": "END_OF_LINE", "start": 24, "end": 24, "text": ""}
|
13
|
+
]
|