cucumber-expressions 1.0.3 → 1.0.4
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.
- checksums.yaml +4 -4
- data/.travis.yml +9 -14
- data/cucumber-expressions.gemspec +4 -5
- data/lib/cucumber/cucumber_expressions/cucumber_expression.rb +9 -1
- data/lib/cucumber/cucumber_expressions/transform.rb +1 -4
- data/lib/cucumber/cucumber_expressions/transform_lookup.rb +2 -2
- data/spec/capture_warnings.rb +4 -4
- data/spec/cucumber/cucumber_expressions/cucumber_expression_generator_spec.rb +1 -1
- data/spec/cucumber/cucumber_expressions/cucumber_expression_regexp_spec.rb +1 -1
- data/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb +2 -2
- data/spec/cucumber/cucumber_expressions/custom_transform_spec.rb +9 -3
- data/spec/cucumber/cucumber_expressions/regular_expression_spec.rb +2 -1
- metadata +14 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b8ed8f5d21a95380e884f0c080d076e2e89d17f
|
4
|
+
data.tar.gz: 7682387d1c85962fb28b6c21683bb48157ef3b49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a66f2c66cc3de2a570ac6cc317f54eb4988bc4d99185b8e9649cff3c26b85670cbea82754cf8ad4483f60351494de83890068e3f970e3c7fa870e83d0e23a709
|
7
|
+
data.tar.gz: c34c94c1760c2a8a264c338000a0473b0d557fffe253e6bf1793f0e006d106de1ab59f47b9e2ebed1a4565c05b4715c79fddc103e4e2b26156a8b761252e7051
|
data/.travis.yml
CHANGED
@@ -1,20 +1,15 @@
|
|
1
|
-
# manyrepo: cucumber/cucumber-expressions-ruby
|
2
1
|
language: ruby
|
3
|
-
sudo: false
|
4
2
|
|
5
3
|
rvm:
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
- 2.
|
9
|
-
-
|
10
|
-
- jruby-9.1.2.0
|
11
|
-
|
12
|
-
before_install:
|
13
|
-
- gem update bundler
|
4
|
+
- 2.4.0
|
5
|
+
- 2.3.3
|
6
|
+
- 2.2.6
|
7
|
+
- jruby-9.1.7.0
|
14
8
|
|
15
9
|
notifications:
|
16
|
-
email:
|
17
|
-
- cukes-devs@googlegroups.com
|
18
10
|
webhooks:
|
19
|
-
urls:
|
20
|
-
- https://webhooks.gitter.im/e/
|
11
|
+
urls:
|
12
|
+
- https://webhooks.gitter.im/e/5373e574ed4e88026838
|
13
|
+
on_success: change
|
14
|
+
on_failure: always
|
15
|
+
on_start: never
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'cucumber-expressions'
|
4
|
-
s.version = '1.0.
|
4
|
+
s.version = '1.0.4'
|
5
5
|
s.authors = ["Aslak Hellesøy"]
|
6
6
|
s.description = 'Cucumber Expressions - a simpler alternative to Regular Expressions'
|
7
7
|
s.summary = "cucumber-expressions-#{s.version}"
|
@@ -11,13 +11,12 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.license = "MIT"
|
12
12
|
s.required_ruby_version = ">= 1.9.3"
|
13
13
|
|
14
|
-
s.add_development_dependency 'bundler'
|
15
|
-
s.add_development_dependency 'rake', '
|
14
|
+
s.add_development_dependency 'bundler'
|
15
|
+
s.add_development_dependency 'rake', '~> 10.5'
|
16
16
|
s.add_development_dependency 'rspec', '~> 3.5'
|
17
|
-
s.add_development_dependency 'json', '~> 2.0.2'
|
18
17
|
|
19
18
|
# For coverage reports
|
20
|
-
s.add_development_dependency 'coveralls'
|
19
|
+
s.add_development_dependency 'coveralls'
|
21
20
|
|
22
21
|
s.rubygems_version = ">= 1.6.1"
|
23
22
|
s.files = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ }
|
@@ -45,7 +45,7 @@ module Cucumber
|
|
45
45
|
@transforms.push(transform)
|
46
46
|
|
47
47
|
text = expression.slice(match_offset...match.offset(0)[0])
|
48
|
-
capture_regexp =
|
48
|
+
capture_regexp = capture_group_regexp(transform.capture_group_regexps)
|
49
49
|
match_offset = match.offset(0)[1]
|
50
50
|
regexp += text
|
51
51
|
regexp += capture_regexp
|
@@ -58,6 +58,14 @@ module Cucumber
|
|
58
58
|
def match(text)
|
59
59
|
ArgumentMatcher.match_arguments(@regexp, text, @transforms)
|
60
60
|
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def capture_group_regexp(capture_group_regexps)
|
65
|
+
return "(#{capture_group_regexps[0]})" if capture_group_regexps.size == 1
|
66
|
+
capture_groups = capture_group_regexps.map { |group| "(?:#{group})" }
|
67
|
+
"(#{capture_groups.join('|')})"
|
68
|
+
end
|
61
69
|
end
|
62
70
|
end
|
63
71
|
end
|
@@ -7,10 +7,7 @@ module Cucumber
|
|
7
7
|
#
|
8
8
|
# @param type_name [Array] array of class or type name to use in {arg:type_name}
|
9
9
|
# @param capture_group_regexps [Array] list of regexps for capture groups.
|
10
|
-
#
|
11
|
-
# to their internal Regexp representation. They are all used for type conversion
|
12
|
-
# in RegularExpression instances.
|
13
|
-
# @transformer lambda that transforms a String to another type
|
10
|
+
# @param transformer lambda that transforms a String to another type
|
14
11
|
#
|
15
12
|
def initialize(type_name, type, capture_group_regexps, transformer)
|
16
13
|
@type_name, @type, @transformer = type_name, type, transformer
|
@@ -3,7 +3,7 @@ require 'cucumber/cucumber_expressions/transform'
|
|
3
3
|
module Cucumber
|
4
4
|
module CucumberExpressions
|
5
5
|
class TransformLookup
|
6
|
-
|
6
|
+
INTEGER_REGEXPS = ['-?\d+', '\d+']
|
7
7
|
FLOATING_POINT_REGEXPS = ['-?\d*\.?\d+']
|
8
8
|
|
9
9
|
def initialize
|
@@ -11,7 +11,7 @@ module Cucumber
|
|
11
11
|
@transforms_by_capture_group_regexp = {}
|
12
12
|
@transforms_by_class = {}
|
13
13
|
|
14
|
-
add_transform(Transform.new('int',
|
14
|
+
add_transform(Transform.new('int', Integer, INTEGER_REGEXPS, lambda {|s| s.to_i}))
|
15
15
|
add_transform(Transform.new('float', Float, FLOATING_POINT_REGEXPS, lambda {|s| s.to_f}))
|
16
16
|
end
|
17
17
|
|
data/spec/capture_warnings.rb
CHANGED
@@ -13,7 +13,7 @@ module CaptureWarnings
|
|
13
13
|
end
|
14
14
|
|
15
15
|
if other_warnings.any?
|
16
|
-
puts "#{ other_warnings.count } non-cucumber-
|
16
|
+
puts "#{ other_warnings.count } non-cucumber-expressions warnings detected, set VIEW_OTHER_WARNINGS=true to see them."
|
17
17
|
print_warnings('other', other_warnings) if ENV['VIEW_OTHER_WARNINGS']
|
18
18
|
end
|
19
19
|
|
@@ -23,9 +23,9 @@ module CaptureWarnings
|
|
23
23
|
end
|
24
24
|
|
25
25
|
if project_warnings.any?
|
26
|
-
puts "#{ project_warnings.count } cucumber-
|
27
|
-
print_warnings('cucumber-
|
28
|
-
fail "Please remove all cucumber-
|
26
|
+
puts "#{ project_warnings.count } cucumber-expressions warnings detected"
|
27
|
+
print_warnings('cucumber-expressions', project_warnings)
|
28
|
+
fail "Please remove all cucumber-expressions warnings."
|
29
29
|
end
|
30
30
|
|
31
31
|
ensure_system_exit_if_required
|
@@ -63,7 +63,7 @@ module Cucumber
|
|
63
63
|
it "exposes transforms in generated expression" do
|
64
64
|
expression = @generator.generate_expression("I have 2 cukes and 1.5 euro", true)
|
65
65
|
types = expression.transforms.map(&:type)
|
66
|
-
expect(types).to eq([
|
66
|
+
expect(types).to eq([Integer, Float])
|
67
67
|
end
|
68
68
|
|
69
69
|
def assert_typed_expression(expected, text)
|
@@ -27,7 +27,7 @@ module Cucumber
|
|
27
27
|
it "translates three typed arguments" do
|
28
28
|
assert_regexp(
|
29
29
|
"I have {n:float} cukes in my {bodypart} at {time:int} o'clock",
|
30
|
-
/^I have (-?\d*\.?\d+) cukes in my (.+) at (
|
30
|
+
/^I have (-?\d*\.?\d+) cukes in my (.+) at ((?:-?\d+)|(?:\d+)) o'clock$/
|
31
31
|
)
|
32
32
|
end
|
33
33
|
|
@@ -30,8 +30,8 @@ module Cucumber
|
|
30
30
|
end
|
31
31
|
|
32
32
|
# Ruby-specific
|
33
|
-
it "transforms to
|
34
|
-
expect( match("{what}", "22", [
|
33
|
+
it "transforms to Integer by explicit type" do
|
34
|
+
expect( match("{what}", "22", [Integer]) ).to eq([22])
|
35
35
|
end
|
36
36
|
|
37
37
|
it "doesn't match a float to an int" do
|
@@ -13,7 +13,7 @@ module Cucumber
|
|
13
13
|
end
|
14
14
|
### [color-constructor]
|
15
15
|
|
16
|
-
def ==
|
16
|
+
def ==(other)
|
17
17
|
other.is_a?(Color) && other.name == name
|
18
18
|
end
|
19
19
|
end
|
@@ -25,19 +25,25 @@ module Cucumber
|
|
25
25
|
@transform_lookup.add_transform(Transform.new(
|
26
26
|
'color',
|
27
27
|
Color,
|
28
|
-
'red|blue|yellow',
|
28
|
+
['red|blue|yellow', '(?:dark|light) (?:red|blue|yellow)'],
|
29
29
|
lambda { |s| Color.new(s) }
|
30
30
|
))
|
31
31
|
### [add-color-transform]
|
32
32
|
end
|
33
33
|
|
34
34
|
describe CucumberExpression do
|
35
|
-
it "transforms arguments with expression type" do
|
35
|
+
it "transforms arguments with expression type I" do
|
36
36
|
expression = CucumberExpression.new("I have a {color:color} ball", [], @transform_lookup)
|
37
37
|
transformed_argument_value = expression.match("I have a red ball")[0].transformed_value
|
38
38
|
expect( transformed_argument_value ).to eq(Color.new('red'))
|
39
39
|
end
|
40
40
|
|
41
|
+
it "transforms arguments with expression type II" do
|
42
|
+
expression = CucumberExpression.new("I have a {color:color} ball", [], @transform_lookup)
|
43
|
+
transformed_argument_value = expression.match("I have a dark red ball")[0].transformed_value
|
44
|
+
expect( transformed_argument_value ).to eq(Color.new('dark red'))
|
45
|
+
end
|
46
|
+
|
41
47
|
it "transforms arguments with explicit type" do
|
42
48
|
expression = CucumberExpression.new("I have a {color} ball", [Color], @transform_lookup)
|
43
49
|
transformed_argument_value = expression.match("I have a red ball")[0].transformed_value
|
@@ -51,7 +51,8 @@ module Cucumber
|
|
51
51
|
|
52
52
|
it "fails when type is not type name or class" do
|
53
53
|
expect( lambda { match(/(.*)/, "-1.22", [99]) } ).to raise_error(
|
54
|
-
|
54
|
+
# Ruby 2.3 and older report Fixnum, 2.4 and newer report Integer
|
55
|
+
/Type must be string or class, but was 99 of type (?:Fixnum)|(?:Integer)/)
|
55
56
|
end
|
56
57
|
|
57
58
|
it "exposes source" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-expressions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
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:
|
11
|
+
date: 2017-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 10.5
|
33
|
+
version: '10.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 10.5
|
40
|
+
version: '10.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,34 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.5'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: json
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 2.0.2
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 2.0.2
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: coveralls
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - "
|
59
|
+
- - ">="
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
61
|
+
version: '0'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- - "
|
66
|
+
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
68
|
+
version: '0'
|
83
69
|
description: Cucumber Expressions - a simpler alternative to Regular Expressions
|
84
70
|
email: cukes@googlegroups.com
|
85
71
|
executables: []
|
@@ -133,10 +119,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
119
|
version: '0'
|
134
120
|
requirements: []
|
135
121
|
rubyforge_project:
|
136
|
-
rubygems_version: 2.5.2
|
122
|
+
rubygems_version: 2.4.5.2
|
137
123
|
signing_key:
|
138
124
|
specification_version: 4
|
139
|
-
summary: cucumber-expressions-1.0.
|
125
|
+
summary: cucumber-expressions-1.0.4
|
140
126
|
test_files:
|
141
127
|
- spec/capture_warnings.rb
|
142
128
|
- spec/coverage.rb
|