cucumber-cucumber-expressions 17.0.1 → 17.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +13 -3
  3. data/.rubocop_todo.yml +60 -141
  4. data/VERSION +1 -1
  5. data/cucumber-cucumber-expressions.gemspec +9 -4
  6. data/lib/cucumber/cucumber_expressions/combinatorial_generated_expression_factory.rb +1 -1
  7. data/lib/cucumber/cucumber_expressions/cucumber_expression.rb +8 -8
  8. data/lib/cucumber/cucumber_expressions/cucumber_expression_parser.rb +1 -1
  9. data/lib/cucumber/cucumber_expressions/errors.rb +11 -11
  10. data/lib/cucumber/cucumber_expressions/parameter_type.rb +1 -3
  11. data/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb +2 -2
  12. data/spec/cucumber/cucumber_expressions/argument_spec.rb +1 -1
  13. data/spec/cucumber/cucumber_expressions/combinatorial_generated_expression_factory_spec.rb +41 -0
  14. data/spec/cucumber/cucumber_expressions/cucumber_expression_generator_spec.rb +10 -10
  15. data/spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb +1 -1
  16. data/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb +8 -8
  17. data/spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb +2 -2
  18. data/spec/cucumber/cucumber_expressions/cucumber_expression_transformation_spec.rb +2 -2
  19. data/spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb +7 -7
  20. data/spec/cucumber/cucumber_expressions/expression_factory_spec.rb +1 -1
  21. data/spec/cucumber/cucumber_expressions/parameter_type_registry_spec.rb +11 -11
  22. data/spec/cucumber/cucumber_expressions/parameter_type_spec.rb +1 -1
  23. data/spec/cucumber/cucumber_expressions/regular_expression_spec.rb +2 -2
  24. data/spec/cucumber/cucumber_expressions/tree_regexp_spec.rb +26 -27
  25. metadata +62 -6
  26. data/spec/cucumber/cucumber_expressions/combinatorial_generated_expression_factory_test.rb +0 -44
@@ -13,13 +13,13 @@ module Cucumber
13
13
 
14
14
  before do
15
15
  @parameter_type_registry = ParameterTypeRegistry.new
16
- @generator = CucumberExpressionGenerator.new(@parameter_type_registry)
16
+ @generator = described_class.new(@parameter_type_registry)
17
17
  end
18
18
 
19
19
  it 'documents expression generation' do
20
20
  parameter_registry = ParameterTypeRegistry.new
21
21
  ### [generate-expression]
22
- generator = CucumberExpressionGenerator.new(parameter_registry)
22
+ generator = described_class.new(parameter_registry)
23
23
  undefined_step_text = 'I have 2 cucumbers and 1.5 tomato'
24
24
  generated_expression = generator.generate_expressions(undefined_step_text)[0]
25
25
  expect(generated_expression.source).to eq('I have {int} cucumbers and {float} tomato')
@@ -69,7 +69,7 @@ module Cucumber
69
69
  'currency',
70
70
  '[A-Z]{3}',
71
71
  Currency,
72
- ->(s) { Currency.new(s)},
72
+ ->(s) { Currency.new(s) },
73
73
  true,
74
74
  true
75
75
  )
@@ -91,7 +91,7 @@ module Cucumber
91
91
  'optional-flight',
92
92
  /(1st flight)?/,
93
93
  String,
94
- ->(s) { s},
94
+ ->(s) { s },
95
95
  true,
96
96
  false
97
97
  )
@@ -101,7 +101,7 @@ module Cucumber
101
101
  'optional-hotel',
102
102
  /(1 hotel)?/,
103
103
  String,
104
- ->(s) { s},
104
+ ->(s) { s },
105
105
  true,
106
106
  false
107
107
  )
@@ -121,7 +121,7 @@ module Cucumber
121
121
  "my-type-#{i}",
122
122
  /([a-z] )*?[a-z]/,
123
123
  String,
124
- ->(s) { s},
124
+ ->(s) { s },
125
125
  true,
126
126
  false
127
127
  )
@@ -139,7 +139,7 @@ module Cucumber
139
139
  'zero-or-more',
140
140
  /[a-z]*/,
141
141
  String,
142
- ->(s) { s},
142
+ ->(s) { s },
143
143
  true,
144
144
  false
145
145
  )
@@ -149,7 +149,7 @@ module Cucumber
149
149
  'exactly-one',
150
150
  /[a-z]/,
151
151
  String,
152
- ->(s) { s},
152
+ ->(s) { s },
153
153
  true,
154
154
  false
155
155
  )
@@ -168,7 +168,7 @@ module Cucumber
168
168
  'direction',
169
169
  /(up|down)/,
170
170
  String,
171
- ->(s) { s},
171
+ ->(s) { s },
172
172
  true,
173
173
  false
174
174
  )
@@ -198,7 +198,7 @@ module Cucumber
198
198
  'direction',
199
199
  /(up|down)/,
200
200
  String,
201
- ->(s) { s},
201
+ ->(s) { s },
202
202
  true,
203
203
  false
204
204
  )
@@ -10,7 +10,7 @@ module Cucumber
10
10
  Dir['../testdata/cucumber-expression/parser/*.yaml'].each do |path|
11
11
  expectation = YAML.load_file(path)
12
12
  it "parses #{path}" do
13
- parser = CucumberExpressionParser.new
13
+ parser = described_class.new
14
14
  if expectation['exception']
15
15
  expect { parser.parse(expectation['expression']) }.to raise_error(expectation['exception'])
16
16
  else
@@ -14,11 +14,11 @@ module Cucumber
14
14
  parameter_registry = ParameterTypeRegistry.new
15
15
  if expectation['exception']
16
16
  expect {
17
- cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
17
+ cucumber_expression = described_class.new(expectation['expression'], parameter_registry)
18
18
  cucumber_expression.match(expectation['text'])
19
19
  }.to raise_error(expectation['exception'])
20
20
  else
21
- cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
21
+ cucumber_expression = described_class.new(expectation['expression'], parameter_registry)
22
22
  matches = cucumber_expression.match(expectation['text'])
23
23
  values = matches.nil? ? nil : matches.map do |arg|
24
24
  value = arg.value(nil)
@@ -43,7 +43,7 @@ module Cucumber
43
43
 
44
44
  ### [capture-match-arguments]
45
45
  expr = 'I have {int} cuke(s)'
46
- expression = CucumberExpression.new(expr, parameter_registry)
46
+ expression = described_class.new(expr, parameter_registry)
47
47
  args = expression.match('I have 7 cukes')
48
48
 
49
49
  expect(args[0].value(nil)).to eq(7)
@@ -96,13 +96,13 @@ module Cucumber
96
96
  it 'exposes source' do
97
97
  expr = 'I have {int} cuke(s)'
98
98
 
99
- expect(CucumberExpression.new(expr, ParameterTypeRegistry.new).source).to eq(expr)
99
+ expect(described_class.new(expr, ParameterTypeRegistry.new).source).to eq(expr)
100
100
  end
101
101
 
102
102
  it 'exposes source via #to_s' do
103
103
  expr = 'I have {int} cuke(s)'
104
104
 
105
- expect(CucumberExpression.new(expr, ParameterTypeRegistry.new).to_s).to eq(expr.inspect)
105
+ expect(described_class.new(expr, ParameterTypeRegistry.new).to_s).to eq(expr.inspect)
106
106
  end
107
107
 
108
108
  it 'unmatched optional groups have undefined values' do
@@ -117,7 +117,7 @@ module Cucumber
117
117
  true
118
118
  )
119
119
  )
120
- expression = CucumberExpression.new('{textAndOrNumber}', parameter_type_registry)
120
+ expression = described_class.new('{textAndOrNumber}', parameter_type_registry)
121
121
 
122
122
  class World; end
123
123
 
@@ -139,7 +139,7 @@ module Cucumber
139
139
  true
140
140
  )
141
141
  )
142
- expression = CucumberExpression.new(
142
+ expression = described_class.new(
143
143
  'I have a {widget}',
144
144
  parameter_type_registry
145
145
  )
@@ -158,7 +158,7 @@ module Cucumber
158
158
  it 'reports undefined parameter type name' do
159
159
  parameter_type_registry = ParameterTypeRegistry.new
160
160
 
161
- CucumberExpression.new(
161
+ described_class.new(
162
162
  'I have {int} {widget}(s) in {word}',
163
163
  parameter_type_registry
164
164
  )
@@ -10,12 +10,12 @@ module Cucumber
10
10
  Dir['../testdata/cucumber-expression/tokenizer/*.yaml'].each do |path|
11
11
  expectation = YAML.load_file(path)
12
12
  it "tokenizes #{path}" do
13
- tokenizer = CucumberExpressionTokenizer.new
13
+ tokenizer = described_class.new
14
14
  if expectation['exception']
15
15
  expect { tokenizer.tokenize(expectation['expression']) }.to raise_error(expectation['exception'])
16
16
  else
17
17
  tokens = tokenizer.tokenize(expectation['expression'])
18
- token_hashes = tokens.map {|token| token.to_hash}
18
+ token_hashes = tokens.map { |token| token.to_hash }
19
19
  expect(token_hashes).to eq(expectation['expected_tokens'])
20
20
  end
21
21
  end
@@ -13,11 +13,11 @@ module Cucumber
13
13
  parameter_registry = ParameterTypeRegistry.new
14
14
  if expectation['exception']
15
15
  expect {
16
- cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
16
+ cucumber_expression = described_class.new(expectation['expression'], parameter_registry)
17
17
  cucumber_expression.match(expectation['text'])
18
18
  }.to raise_error(expectation['exception'])
19
19
  else
20
- cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
20
+ cucumber_expression = described_class.new(expectation['expression'], parameter_registry)
21
21
  matches = cucumber_expression.match(expectation['text'])
22
22
  values = matches.nil? ? nil : matches.map { |arg| arg.value(nil) }
23
23
  expect(values).to eq(expectation['expected_args'])
@@ -73,7 +73,7 @@ module Cucumber
73
73
 
74
74
  describe CucumberExpression do
75
75
  it 'matches parameters with custom parameter type' do
76
- expression = CucumberExpression.new('I have a {color} ball', @parameter_type_registry)
76
+ expression = described_class.new('I have a {color} ball', @parameter_type_registry)
77
77
  transformed_argument_value = expression.match('I have a red ball')[0].value(nil)
78
78
 
79
79
  expect(transformed_argument_value).to eq(Color.new('red'))
@@ -91,7 +91,7 @@ module Cucumber
91
91
  )
92
92
  )
93
93
 
94
- expression = CucumberExpression.new('A {int} thick line from {coordinate} to {coordinate}', @parameter_type_registry)
94
+ expression = described_class.new('A {int} thick line from {coordinate} to {coordinate}', @parameter_type_registry)
95
95
  args = expression.match('A 5 thick line from 10,20,30 to 40,50,60')
96
96
 
97
97
  thick = args[0].value(nil)
@@ -116,7 +116,7 @@ module Cucumber
116
116
  false
117
117
  )
118
118
  )
119
- expression = CucumberExpression.new('I have a {color} ball', parameter_type_registry)
119
+ expression = described_class.new('I have a {color} ball', parameter_type_registry)
120
120
  transformed_argument_value = expression.match('I have a dark red ball')[0].value(nil)
121
121
 
122
122
  expect(transformed_argument_value).to eq(Color.new('dark red'))
@@ -133,7 +133,7 @@ module Cucumber
133
133
  false
134
134
  )
135
135
  )
136
- expression = CucumberExpression.new('I have a {throwing} parameter', @parameter_type_registry)
136
+ expression = described_class.new('I have a {throwing} parameter', @parameter_type_registry)
137
137
  args = expression.match('I have a bad parameter')
138
138
 
139
139
  expect { args[0].value(nil) }.to raise_error("Can't transform [bad]")
@@ -179,12 +179,12 @@ module Cucumber
179
179
  false
180
180
  )
181
181
  )
182
- css_color = CucumberExpression.new('I have a {css-color} ball', @parameter_type_registry)
182
+ css_color = described_class.new('I have a {css-color} ball', @parameter_type_registry)
183
183
  css_color_value = css_color.match('I have a blue ball')[0].value(nil)
184
184
 
185
185
  expect(css_color_value).to eq(CssColor.new('blue'))
186
186
 
187
- color = CucumberExpression.new('I have a {color} ball', @parameter_type_registry)
187
+ color = described_class.new('I have a {color} ball', @parameter_type_registry)
188
188
  color_value = color.match('I have a blue ball')[0].value(nil)
189
189
 
190
190
  expect(color_value).to eq(Color.new('blue'))
@@ -205,7 +205,7 @@ module Cucumber
205
205
  false
206
206
  )
207
207
  )
208
- expression = RegularExpression.new(/I have a (red|blue|yellow) ball/, parameter_type_registry)
208
+ expression = described_class.new(/I have a (red|blue|yellow) ball/, parameter_type_registry)
209
209
  value = expression.match('I have a red ball')[0].value(nil)
210
210
 
211
211
  expect(value).to eq(Color.new('red'))
@@ -6,7 +6,7 @@ module Cucumber
6
6
  module CucumberExpressions
7
7
  describe ExpressionFactory do
8
8
  before do
9
- @expression_factory = ExpressionFactory.new(ParameterTypeRegistry.new)
9
+ @expression_factory = described_class.new(ParameterTypeRegistry.new)
10
10
  end
11
11
 
12
12
  it 'creates a RegularExpression' do
@@ -14,24 +14,24 @@ module Cucumber
14
14
 
15
15
  describe ParameterTypeRegistry do
16
16
  before do
17
- @registry = ParameterTypeRegistry.new
17
+ @registry = described_class.new
18
18
  end
19
19
 
20
20
  it 'does not allow more than one prefer_for_regexp_match parameter type for each regexp' do
21
- @registry.define_parameter_type(ParameterType.new('name', CAPITALISED_WORD, Name, ->(s) { Name.new }, true, true))
22
- @registry.define_parameter_type(ParameterType.new('person', CAPITALISED_WORD, Person, ->(s) { Person.new }, true, false))
21
+ @registry.define_parameter_type(ParameterType.new('name', CAPITALISED_WORD, Name, ->(_) { Name.new }, true, true))
22
+ @registry.define_parameter_type(ParameterType.new('person', CAPITALISED_WORD, Person, ->(_) { Person.new }, true, false))
23
23
  expect do
24
- @registry.define_parameter_type(ParameterType.new('place', CAPITALISED_WORD, Place, ->(s) { Place.new }, true, true))
24
+ @registry.define_parameter_type(ParameterType.new('place', CAPITALISED_WORD, Place, ->(_) { Place.new }, true, true))
25
25
  end.to raise_error(
26
26
  CucumberExpressionError,
27
- 'There can only be one preferential parameter type per regexp. The regexp /[A-Z]+\\w+/ is used for two preferential parameter types, {name} and {place}'
27
+ 'There can only be one preferential parameter type per regexp. The regexp /[A-Z]+\\w+/ is used for two: {name} and {place}'
28
28
  )
29
29
  end
30
30
 
31
31
  it 'looks up prefer_for_regexp_match parameter type by regexp' do
32
- name = ParameterType.new('name', CAPITALISED_WORD, Name, ->(s) { Name.new }, true, false)
33
- person = ParameterType.new('person', CAPITALISED_WORD, Person, ->(s) { Person.new }, true, true)
34
- place = ParameterType.new('place', CAPITALISED_WORD, Place, ->(s) { Place.new }, true, false)
32
+ name = ParameterType.new('name', CAPITALISED_WORD, Name, ->(_) { Name.new }, true, false)
33
+ person = ParameterType.new('person', CAPITALISED_WORD, Person, ->(_) { Person.new }, true, true)
34
+ place = ParameterType.new('place', CAPITALISED_WORD, Place, ->(_) { Place.new }, true, false)
35
35
 
36
36
  @registry.define_parameter_type(name)
37
37
  @registry.define_parameter_type(person)
@@ -41,9 +41,9 @@ module Cucumber
41
41
  end
42
42
 
43
43
  it 'throws ambiguous exception when no parameter types are prefer_for_regexp_match' do
44
- name = ParameterType.new('name', CAPITALISED_WORD, Name, ->(s) { Name.new }, true, false)
45
- person = ParameterType.new('person', CAPITALISED_WORD, Person, ->(s) { Person.new }, true, false)
46
- place = ParameterType.new('place', CAPITALISED_WORD, Place, ->(s) { Place.new }, true, false)
44
+ name = ParameterType.new('name', CAPITALISED_WORD, Name, ->(_) { Name.new }, true, false)
45
+ person = ParameterType.new('person', CAPITALISED_WORD, Person, ->(_) { Person.new }, true, false)
46
+ place = ParameterType.new('place', CAPITALISED_WORD, Place, ->(_) { Place.new }, true, false)
47
47
 
48
48
  @registry.define_parameter_type(name)
49
49
  @registry.define_parameter_type(person)
@@ -7,7 +7,7 @@ module Cucumber
7
7
  describe ParameterType do
8
8
  it 'does not allow ignore flag on regexp' do
9
9
  expect do
10
- ParameterType.new('case-insensitive', /[a-z]+/i, String, ->(s) { s }, true, true)
10
+ described_class.new('case-insensitive', /[a-z]+/i, String, ->(s) { s }, true, true)
11
11
  end.to raise_error(
12
12
  CucumberExpressionError,
13
13
  "ParameterType Regexps can't use option Regexp::IGNORECASE"
@@ -12,7 +12,7 @@ module Cucumber
12
12
 
13
13
  it "matches #{path}" do
14
14
  parameter_registry = ParameterTypeRegistry.new
15
- expression = RegularExpression.new(Regexp.new(expectation['expression']), parameter_registry)
15
+ expression = described_class.new(Regexp.new(expectation['expression']), parameter_registry)
16
16
  matches = expression.match(expectation['text'])
17
17
  values = matches.map { |arg| arg.value(nil) }
18
18
 
@@ -75,7 +75,7 @@ module Cucumber
75
75
 
76
76
  it 'exposes source and regexp' do
77
77
  regexp = /I have (\d+) cukes? in my (\+) now/
78
- expression = RegularExpression.new(regexp, ParameterTypeRegistry.new)
78
+ expression = described_class.new(regexp, ParameterTypeRegistry.new)
79
79
 
80
80
  expect(expression.regexp).to eq(regexp)
81
81
  expect(expression.source).to eq(regexp.source)
@@ -6,12 +6,12 @@ module Cucumber
6
6
  module CucumberExpressions
7
7
  describe TreeRegexp do
8
8
  it 'exposes the group source' do
9
- tr = TreeRegexp.new(/(a(?:b)?)(c)/)
9
+ tr = described_class.new(/(a(?:b)?)(c)/)
10
10
  expect(tr.group_builder.children.map { |gb| gb.source }).to eq(['a(?:b)?', 'c'])
11
11
  end
12
12
 
13
13
  it 'builds a tree' do
14
- tr = TreeRegexp.new(/(a(?:b)?)(c)/)
14
+ tr = described_class.new(/(a(?:b)?)(c)/)
15
15
  group = tr.match('ac')
16
16
  expect(group.value).to eq('ac')
17
17
  expect(group.children[0].value).to eq('a')
@@ -20,7 +20,7 @@ module Cucumber
20
20
  end
21
21
 
22
22
  it 'ignores `?:` as a non-capturing group' do
23
- tr = TreeRegexp.new(/a(?:b)(c)/)
23
+ tr = described_class.new(/a(?:b)(c)/)
24
24
  group = tr.match('abc')
25
25
  expect(group.value).to eq('abc')
26
26
  expect(group.children.length).to eq 1
@@ -28,14 +28,14 @@ module Cucumber
28
28
  end
29
29
 
30
30
  it 'ignores `?!` as a non-capturing group' do
31
- tr = TreeRegexp.new(/a(?!b)(.+)/)
31
+ tr = described_class.new(/a(?!b)(.+)/)
32
32
  group = tr.match('aBc')
33
33
  expect(group.value).to eq('aBc')
34
34
  expect(group.children.length).to eq 1
35
35
  end
36
36
 
37
37
  it 'ignores `?=` as a non-capturing group' do
38
- tr = TreeRegexp.new(/a(?=b)(.+)$/)
38
+ tr = described_class.new(/a(?=b)(.+)$/)
39
39
  group = tr.match('abc')
40
40
  expect(group.value).to eq('abc')
41
41
  expect(group.children[0].value).to eq('bc')
@@ -43,7 +43,7 @@ module Cucumber
43
43
  end
44
44
 
45
45
  it 'ignores `?<=` as a non-capturing group' do
46
- tr = TreeRegexp.new(/a(.+)(?<=c)$/)
46
+ tr = described_class.new(/a(.+)(?<=c)$/)
47
47
  group = tr.match('abc')
48
48
  expect(group.value).to eq('abc')
49
49
  expect(group.children[0].value).to eq('bc')
@@ -51,7 +51,7 @@ module Cucumber
51
51
  end
52
52
 
53
53
  it 'ignores `?<!` as a non-capturing group' do
54
- tr = TreeRegexp.new(/a(.+)(?<!b)$/)
54
+ tr = described_class.new(/a(.+)(?<!b)$/)
55
55
  group = tr.match('abc')
56
56
  expect(group.value).to eq('abc')
57
57
  expect(group.children[0].value).to eq('bc')
@@ -59,7 +59,7 @@ module Cucumber
59
59
  end
60
60
 
61
61
  it 'ignores `?<!` as a non-capturing group' do
62
- tr = TreeRegexp.new(/a(.+)(?<!b)$/)
62
+ tr = described_class.new(/a(.+)(?<!b)$/)
63
63
  group = tr.match('abc')
64
64
  expect(group.value).to eq('abc')
65
65
  expect(group.children[0].value).to eq('bc')
@@ -67,7 +67,7 @@ module Cucumber
67
67
  end
68
68
 
69
69
  it 'ignores `?>` as a non-capturing group' do
70
- tr = TreeRegexp.new(/a(?>b)c/)
70
+ tr = described_class.new(/a(?>b)c/)
71
71
  group = tr.match('abc')
72
72
  expect(group.value).to eq('abc')
73
73
  expect(group.children.length).to eq 0
@@ -75,19 +75,18 @@ module Cucumber
75
75
 
76
76
  it 'throws an error when there are named capture groups because they are buggy in Ruby' do
77
77
  # https://github.com/cucumber/cucumber/issues/329
78
- expect {
79
- TreeRegexp.new(/^I am a person( named "(?<first_name>.+) (?<last_name>.+)")?$/)
80
- }.to raise_error(/Named capture groups are not supported/)
78
+ expect { described_class.new(/^I am a person( named "(?<first_name>.+) (?<last_name>.+)")?$/) }
79
+ .to raise_error(/Named capture groups are not supported/)
81
80
  end
82
81
 
83
82
  it 'matches an optional group' do
84
- tr = TreeRegexp.new(/^Something( with an optional argument)?/)
83
+ tr = described_class.new(/^Something( with an optional argument)?/)
85
84
  group = tr.match('Something')
86
- expect(group.children[0].value).to eq(nil)
85
+ expect(group.children[0].value).to be_nil
87
86
  end
88
87
 
89
88
  it 'matches nested groups' do
90
- tr = TreeRegexp.new(/^A (\d+) thick line from ((\d+),\s*(\d+),\s*(\d+)) to ((\d+),\s*(\d+),\s*(\d+))/)
89
+ tr = described_class.new(/^A (\d+) thick line from ((\d+),\s*(\d+),\s*(\d+)) to ((\d+),\s*(\d+),\s*(\d+))/)
91
90
  group = tr.match('A 5 thick line from 10,20,30 to 40,50,60')
92
91
 
93
92
  expect(group.children[0].value).to eq('5')
@@ -102,31 +101,31 @@ module Cucumber
102
101
  end
103
102
 
104
103
  it 'detects multiple non-capturing groups' do
105
- tr = TreeRegexp.new(/(?:a)(:b)(\?c)(d)/)
104
+ tr = described_class.new(/(?:a)(:b)(\?c)(d)/)
106
105
  group = tr.match('a:b?cd')
107
106
  expect(group.children.length).to eq(3)
108
107
  end
109
108
 
110
109
  it 'works with escaped backslashes' do
111
- tr = TreeRegexp.new(/foo\\(bar|baz)/)
110
+ tr = described_class.new(/foo\\(bar|baz)/)
112
111
  group = tr.match('foo\\bar')
113
112
  expect(group.children.length).to eq(1)
114
113
  end
115
114
 
116
115
  it 'works with escaped slashes' do
117
- tr = TreeRegexp.new(/^I go to '\/(.+)'$/)
116
+ tr = described_class.new(/^I go to '\/(.+)'$/)
118
117
  group = tr.match("I go to '/hello'")
119
118
  expect(group.children.length).to eq(1)
120
119
  end
121
120
 
122
121
  it 'works with digit and word regexp metacharacters' do
123
- tr = TreeRegexp.new(/^(\d) (\w+)$/)
122
+ tr = described_class.new(/^(\d) (\w+)$/)
124
123
  group = tr.match('2 you')
125
124
  expect(group.children.length).to eq(2)
126
125
  end
127
126
 
128
127
  it 'captures non-capturing groups with capturing groups inside' do
129
- tr = TreeRegexp.new(/the stdout(?: from "(.*?)")?/)
128
+ tr = described_class.new(/the stdout(?: from "(.*?)")?/)
130
129
  group = tr.match('the stdout')
131
130
  expect(group.value).to eq('the stdout')
132
131
  expect(group.children[0].value).to eq(nil)
@@ -134,13 +133,13 @@ module Cucumber
134
133
  end
135
134
 
136
135
  it 'works with flags' do
137
- tr = TreeRegexp.new(/HELLO/i)
136
+ tr = described_class.new(/HELLO/i)
138
137
  group = tr.match('hello')
139
138
  expect(group.value).to eq('hello')
140
139
  end
141
140
 
142
141
  it('does not consider parentheses in regexp character classes as a group') do
143
- tr = TreeRegexp.new(/^drawings: ([A-Z_, ()]+)$/)
142
+ tr = described_class.new(/^drawings: ([A-Z_, ()]+)$/)
144
143
  group = tr.match('drawings: ONE, TWO(ABC)')
145
144
  expect(group.value).to eq('drawings: ONE, TWO(ABC)')
146
145
  expect(group.children[0].value).to eq('ONE, TWO(ABC)')
@@ -148,21 +147,21 @@ module Cucumber
148
147
  end
149
148
 
150
149
  it 'works with inline flags' do
151
- tr = TreeRegexp.new(/(?i)HELLO/)
150
+ tr = described_class.new(/(?i)HELLO/)
152
151
  group = tr.match('hello')
153
152
  expect(group.value).to eq('hello')
154
153
  expect(group.children.length).to eq 0
155
154
  end
156
155
 
157
156
  it 'works with non-capturing inline flags' do
158
- tr = TreeRegexp.new(/(?i:HELLO)/)
157
+ tr = described_class.new(/(?i:HELLO)/)
159
158
  group = tr.match('hello')
160
159
  expect(group.value).to eq('hello')
161
160
  expect(group.children.length).to eq 0
162
161
  end
163
162
 
164
163
  it 'works with empty capturing groups' do
165
- tr = TreeRegexp.new(/()/)
164
+ tr = described_class.new(/()/)
166
165
  group = tr.match('')
167
166
  expect(group.value).to eq('')
168
167
  expect(group.children[0].value).to eq('')
@@ -170,14 +169,14 @@ module Cucumber
170
169
  end
171
170
 
172
171
  it 'works with empty non-capturing groups' do
173
- tr = TreeRegexp.new(/(?:)/)
172
+ tr = described_class.new(/(?:)/)
174
173
  group = tr.match('')
175
174
  expect(group.value).to eq('')
176
175
  expect(group.children.length).to eq 0
177
176
  end
178
177
 
179
178
  it 'works with empty non-look ahead groups' do
180
- tr = TreeRegexp.new(/(?<=)/)
179
+ tr = described_class.new(/(?<=)/)
181
180
  group = tr.match('')
182
181
  expect(group.value).to eq('')
183
182
  expect(group.children.length).to eq 0
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-cucumber-expressions
3
3
  version: !ruby/object:Gem::Version
4
- version: 17.0.1
4
+ version: 17.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-24 00:00:00.000000000 Z
11
+ date: 2024-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bigdecimal
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,6 +78,48 @@ dependencies:
64
78
  - - "~>"
65
79
  - !ruby/object:Gem::Version
66
80
  version: 1.27.0
81
+ - !ruby/object:Gem::Dependency
82
+ name: rubocop-performance
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: 1.7.0
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: 1.7.0
95
+ - !ruby/object:Gem::Dependency
96
+ name: rubocop-rake
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 0.5.0
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 0.5.0
109
+ - !ruby/object:Gem::Dependency
110
+ name: rubocop-rspec
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: 2.0.0
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: 2.0.0
67
123
  description: Cucumber Expressions - a simpler alternative to Regular Expressions
68
124
  email: cukes@googlegroups.com
69
125
  executables: []
@@ -94,7 +150,7 @@ files:
94
150
  - lib/cucumber/cucumber_expressions/regular_expression.rb
95
151
  - lib/cucumber/cucumber_expressions/tree_regexp.rb
96
152
  - spec/cucumber/cucumber_expressions/argument_spec.rb
97
- - spec/cucumber/cucumber_expressions/combinatorial_generated_expression_factory_test.rb
153
+ - spec/cucumber/cucumber_expressions/combinatorial_generated_expression_factory_spec.rb
98
154
  - spec/cucumber/cucumber_expressions/cucumber_expression_generator_spec.rb
99
155
  - spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb
100
156
  - spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
@@ -106,7 +162,7 @@ files:
106
162
  - spec/cucumber/cucumber_expressions/parameter_type_spec.rb
107
163
  - spec/cucumber/cucumber_expressions/regular_expression_spec.rb
108
164
  - spec/cucumber/cucumber_expressions/tree_regexp_spec.rb
109
- homepage: https://github.com/cucumber/cucumber-expressions-ruby#readme
165
+ homepage: https://github.com/cucumber/cucumber-expressions
110
166
  licenses:
111
167
  - MIT
112
168
  metadata:
@@ -131,8 +187,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
187
  - !ruby/object:Gem::Version
132
188
  version: '0'
133
189
  requirements: []
134
- rubygems_version: 3.4.10
190
+ rubygems_version: 3.4.19
135
191
  signing_key:
136
192
  specification_version: 4
137
- summary: cucumber-expressions-17.0.1
193
+ summary: cucumber-expressions-17.0.2
138
194
  test_files: []