cucumber-cucumber-expressions 14.0.0 → 15.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a32df17b80432aa451bc8f8d5822dfa3b919e44a3feefd657d6dffc730ca56c4
4
- data.tar.gz: 12157d0f708a0eaff7b0fc6ad1afb0b68668dfdfd87a370091466cae29d3fcfe
3
+ metadata.gz: 828b10c145b74d1c95557eb7388501f95b224f9178e252c739c3c885f2c2af57
4
+ data.tar.gz: 64cd2ed8ff725bddb920c6578031cbf9f4c8ac29dcad8027dab71ac06b8e1f6b
5
5
  SHA512:
6
- metadata.gz: 95c6db3127e8a2111ec7f50b06dab07443649e2fd1f759818552df4ac24ec715bd8fb4aad2bd79b3e8054d88dc9751594c75880fa3c15b06f000c82dd88bb37e
7
- data.tar.gz: 59ba7dabc703d4b3f4ce6e0d319c0275dfa1dc78b0589544a51f5a070f8a3c6c183dcf0bfa60dbac168209944ee9f5ce95a7ed280f4b5f5f28c817b84b40a937
6
+ metadata.gz: 5a1936372d073be75fc22ef38fdf16913cdcb3b52efb2192fd6755624c544b7c6c6551971682bde60ee4501c23a078ab0d6946e642a6c307e0236e7ab22b1f35
7
+ data.tar.gz: 217d4ba38d8e5793d29bec8708ce90b9504f8f0848578df0d247201fb7893dae74dd4a0d9bd0d01b852d3085a24faa8ed4aff8a8ef058d3587e91ae6b9aad3d0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 14.0.0
1
+ 15.0.1
@@ -1,6 +1,7 @@
1
1
  require 'cucumber/cucumber_expressions/parameter_type'
2
2
  require 'cucumber/cucumber_expressions/errors'
3
3
  require 'cucumber/cucumber_expressions/cucumber_expression_generator'
4
+ require 'bigdecimal'
4
5
 
5
6
  module Cucumber
6
7
  module CucumberExpressions
@@ -20,6 +21,12 @@ module Cucumber
20
21
  define_parameter_type(ParameterType.new('word', WORD_REGEXP, String, lambda {|s = nil| s}, false, false))
21
22
  define_parameter_type(ParameterType.new('string', STRING_REGEXP, String, lambda { |s1, s2| arg = s1 != nil ? s1 : s2; arg.gsub(/\\"/, '"').gsub(/\\'/, "'")}, true, false))
22
23
  define_parameter_type(ParameterType.new('', ANONYMOUS_REGEXP, String, lambda {|s = nil| s}, false, true))
24
+ define_parameter_type(ParameterType.new('bigdecimal', FLOAT_REGEXP, BigDecimal, lambda {|s = nil| BigDecimal(s)}, false, false))
25
+ define_parameter_type(ParameterType.new('biginteger', INTEGER_REGEXPS, Integer, lambda {|s = nil| s && s.to_i}, false, false))
26
+ define_parameter_type(ParameterType.new('byte', INTEGER_REGEXPS, Integer, lambda {|s = nil| s && s.to_i}, false, false))
27
+ define_parameter_type(ParameterType.new('short', INTEGER_REGEXPS, Integer, lambda {|s = nil| s && s.to_i}, false, false))
28
+ define_parameter_type(ParameterType.new('long', INTEGER_REGEXPS, Integer, lambda {|s = nil| s && s.to_i}, false, false))
29
+ define_parameter_type(ParameterType.new('double', FLOAT_REGEXP, Float, lambda {|s = nil| s && s.to_f}, false, false))
23
30
  end
24
31
 
25
32
  def lookup_by_type_name(name)
@@ -1,21 +1,20 @@
1
1
  require 'yaml'
2
- require 'json'
3
2
  require 'cucumber/cucumber_expressions/cucumber_expression_parser'
4
3
  require 'cucumber/cucumber_expressions/errors'
5
4
 
6
5
  module Cucumber
7
6
  module CucumberExpressions
8
- describe 'Cucumber expression parser' do
9
- Dir['../testdata/ast/*.yaml'].each do |testcase|
10
- expectation = YAML.load_file(testcase) # encoding?
11
- it "#{testcase}" do
7
+ describe CucumberExpressionParser do
8
+ Dir['../testdata/cucumber-expression/parser/*.yaml'].each do |path|
9
+ expectation = YAML.load_file(path)
10
+ it "parses #{path}" do
12
11
  parser = CucumberExpressionParser.new
13
- if expectation['exception'].nil?
12
+ if expectation['exception']
13
+ expect { parser.parse(expectation['expression']) }.to raise_error(expectation['exception'])
14
+ else
14
15
  node = parser.parse(expectation['expression'])
15
16
  node_hash = node.to_hash
16
- expect(node_hash).to eq(JSON.parse(expectation['expected']))
17
- else
18
- expect { parser.parse(expectation['expression']) }.to raise_error(expectation['exception'])
17
+ expect(node_hash).to eq(expectation['expected_ast'])
19
18
  end
20
19
  end
21
20
  end
@@ -1,5 +1,4 @@
1
1
  require 'yaml'
2
- require 'json'
3
2
  require 'cucumber/cucumber_expressions/cucumber_expression'
4
3
  require 'cucumber/cucumber_expressions/parameter_type_registry'
5
4
 
@@ -7,33 +6,36 @@ module Cucumber
7
6
  module CucumberExpressions
8
7
  describe CucumberExpression do
9
8
 
10
- Dir['../testdata/expression/*.yaml'].each do |testcase|
11
- expectation = YAML.load_file(testcase) # encoding?
12
- it "#{testcase}" do
9
+ Dir['../testdata/cucumber-expression/matching/*.yaml'].each do |path|
10
+ expectation = YAML.load_file(path)
11
+ it "matches #{path}" do
13
12
  parameter_registry = ParameterTypeRegistry.new
14
- if expectation['exception'].nil?
15
- cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
16
- matches = cucumber_expression.match(expectation['text'])
17
- values = matches.nil? ? nil : matches.map { |arg| arg.value(nil) }
18
- expect(values).to eq(JSON.parse(expectation['expected']))
19
- else
13
+ if expectation['exception']
20
14
  expect {
21
15
  cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
22
16
  cucumber_expression.match(expectation['text'])
23
17
  }.to raise_error(expectation['exception'])
18
+ else
19
+ cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
20
+ matches = cucumber_expression.match(expectation['text'])
21
+ values = matches.nil? ? nil : matches.map do |arg|
22
+ value = arg.value(nil)
23
+ case value
24
+ when BigDecimal
25
+ # Format {bigdecimal} as string (because it must be a string in matches-bigdecimal.yaml)
26
+ value.to_s('f')
27
+ when Integer
28
+ # Format {bigint} as string (because it must be a string in matches-bigint.yaml)
29
+ value.bit_length > 64 ? value.to_s : value
30
+ else
31
+ value
32
+ end
33
+ end
34
+ expect(values).to eq(expectation['expected_args'])
24
35
  end
25
36
  end
26
37
  end
27
38
 
28
- Dir['../testdata/regex/*.yaml'].each do |testcase|
29
- expectation = YAML.load_file(testcase) # encoding?
30
- it "#{testcase}" do
31
- parameter_registry = ParameterTypeRegistry.new
32
- cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
33
- expect(cucumber_expression.regexp.source).to eq(expectation['expected'])
34
- end
35
- end
36
-
37
39
  it "documents match arguments" do
38
40
  parameter_registry = ParameterTypeRegistry.new
39
41
 
@@ -1,21 +1,20 @@
1
1
  require 'yaml'
2
- require 'json'
3
2
  require 'cucumber/cucumber_expressions/cucumber_expression_tokenizer'
4
3
  require 'cucumber/cucumber_expressions/errors'
5
4
 
6
5
  module Cucumber
7
6
  module CucumberExpressions
8
- describe 'Cucumber expression tokenizer' do
9
- Dir['../testdata/tokens/*.yaml'].each do |testcase|
10
- expectation = YAML.load_file(testcase) # encoding?
11
- it "#{testcase}" do
7
+ describe CucumberExpressionTokenizer do
8
+ Dir['../testdata/cucumber-expression/tokenizer/*.yaml'].each do |path|
9
+ expectation = YAML.load_file(path)
10
+ it "tokenizes #{path}" do
12
11
  tokenizer = CucumberExpressionTokenizer.new
13
- if expectation['exception'].nil?
12
+ if expectation['exception']
13
+ expect { tokenizer.tokenize(expectation['expression']) }.to raise_error(expectation['exception'])
14
+ else
14
15
  tokens = tokenizer.tokenize(expectation['expression'])
15
16
  token_hashes = tokens.map{|token| token.to_hash}
16
- expect(token_hashes).to eq(JSON.parse(expectation['expected']))
17
- else
18
- expect { tokenizer.tokenize(expectation['expression']) }.to raise_error(expectation['exception'])
17
+ expect(token_hashes).to eq(expectation['expected_tokens'])
19
18
  end
20
19
  end
21
20
  end
@@ -0,0 +1,27 @@
1
+ require 'yaml'
2
+ require 'cucumber/cucumber_expressions/cucumber_expression'
3
+ require 'cucumber/cucumber_expressions/parameter_type_registry'
4
+
5
+ module Cucumber
6
+ module CucumberExpressions
7
+ describe CucumberExpression do
8
+ Dir['../testdata/cucumber-expression/transformation/*.yaml'].each do |path|
9
+ expectation = YAML.load_file(path)
10
+ it "transforms #{path}" do
11
+ parameter_registry = ParameterTypeRegistry.new
12
+ if expectation['exception']
13
+ expect {
14
+ cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
15
+ cucumber_expression.match(expectation['text'])
16
+ }.to raise_error(expectation['exception'])
17
+ else
18
+ cucumber_expression = CucumberExpression.new(expectation['expression'], parameter_registry)
19
+ matches = cucumber_expression.match(expectation['text'])
20
+ values = matches.nil? ? nil : matches.map { |arg| arg.value(nil) }
21
+ expect(values).to eq(expectation['expected_args'])
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -7,13 +7,10 @@ module Cucumber
7
7
  class Color
8
8
  attr_reader :name
9
9
 
10
- ### [color-constructor]
11
10
  def initialize(name)
12
11
  @name = name
13
12
  end
14
13
 
15
- ### [color-constructor]
16
-
17
14
  def ==(other)
18
15
  other.is_a?(Color) && other.name == name
19
16
  end
@@ -46,7 +43,6 @@ module Cucumber
46
43
  describe "Custom parameter type" do
47
44
  before do
48
45
  parameter_type_registry = ParameterTypeRegistry.new
49
- ### [add-color-parameter-type]
50
46
  parameter_type_registry.define_parameter_type(ParameterType.new(
51
47
  'color', # name
52
48
  /red|blue|yellow/, # regexp
@@ -55,7 +51,6 @@ module Cucumber
55
51
  true, # use_for_snippets
56
52
  false # prefer_for_regexp_match
57
53
  ))
58
- ### [add-color-parameter-type]
59
54
  @parameter_type_registry = parameter_type_registry
60
55
  end
61
56
 
@@ -1,19 +1,19 @@
1
+ require 'yaml'
1
2
  require 'cucumber/cucumber_expressions/regular_expression'
2
3
  require 'cucumber/cucumber_expressions/parameter_type_registry'
3
4
 
4
5
  module Cucumber
5
6
  module CucumberExpressions
6
7
  describe RegularExpression do
7
- it "documents match arguments" do
8
- parameter_type_registry = ParameterTypeRegistry.new
9
-
10
- ### [capture-match-arguments]
11
- expr = /I have (\d+) cukes? in my (\w*) now/
12
- expression = RegularExpression.new(expr, parameter_type_registry)
13
- args = expression.match("I have 7 cukes in my belly now")
14
- expect( args[0].value(nil) ).to eq(7)
15
- expect( args[1].value(nil) ).to eq("belly")
16
- ### [capture-match-arguments]
8
+ Dir['../testdata/regular-expression/matching/*.yaml'].each do |path|
9
+ expectation = YAML.load_file(path)
10
+ it "matches #{path}" do
11
+ parameter_registry = ParameterTypeRegistry.new
12
+ expression = RegularExpression.new(Regexp.new(expectation['expression']), parameter_registry)
13
+ matches = expression.match(expectation['text'])
14
+ values = matches.map { |arg| arg.value(nil) }
15
+ expect(values).to eq(expectation['expected_args'])
16
+ end
17
17
  end
18
18
 
19
19
  it "does no transform by default" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-cucumber-expressions
3
3
  version: !ruby/object:Gem::Version
4
- version: 14.0.0
4
+ version: 15.0.1
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: 2021-10-12 00:00:00.000000000 Z
11
+ date: 2022-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -88,6 +88,7 @@ files:
88
88
  - spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb
89
89
  - spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
90
90
  - spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb
91
+ - spec/cucumber/cucumber_expressions/cucumber_expression_transformation_spec.rb
91
92
  - spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb
92
93
  - spec/cucumber/cucumber_expressions/expression_factory_spec.rb
93
94
  - spec/cucumber/cucumber_expressions/parameter_type_registry_spec.rb
@@ -122,7 +123,7 @@ requirements: []
122
123
  rubygems_version: 3.2.22
123
124
  signing_key:
124
125
  specification_version: 4
125
- summary: cucumber-expressions-14.0.0
126
+ summary: cucumber-expressions-15.0.1
126
127
  test_files:
127
128
  - spec/capture_warnings.rb
128
129
  - spec/cucumber/cucumber_expressions/argument_spec.rb
@@ -131,6 +132,7 @@ test_files:
131
132
  - spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb
132
133
  - spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
133
134
  - spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb
135
+ - spec/cucumber/cucumber_expressions/cucumber_expression_transformation_spec.rb
134
136
  - spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb
135
137
  - spec/cucumber/cucumber_expressions/expression_factory_spec.rb
136
138
  - spec/cucumber/cucumber_expressions/parameter_type_registry_spec.rb