Import upstream version 8.3.0
Debian Janitor
2 years ago
0 | 0 |
# -*- encoding: utf-8 -*-
|
1 | 1 |
Gem::Specification.new do |s|
|
2 | 2 |
s.name = 'cucumber-expressions'
|
3 | |
s.version = '8.0.0'
|
|
3 |
s.version = '8.3.0'
|
4 | 4 |
s.authors = ["Aslak Hellesøy"]
|
5 | 5 |
s.description = 'Cucumber Expressions - a simpler alternative to Regular Expressions'
|
6 | 6 |
s.summary = "cucumber-expressions-#{s.version}"
|
|
18 | 18 |
'source_code_uri' => 'https://github.com/cucumber/cucumber/blob/master/cucumber-expressions/ruby',
|
19 | 19 |
}
|
20 | 20 |
|
21 | |
s.add_development_dependency 'bundler'
|
22 | |
s.add_development_dependency 'rake', '~> 12.3'
|
23 | |
s.add_development_dependency 'rspec', '~> 3.7'
|
|
21 |
s.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
|
|
22 |
s.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
|
24 | 23 |
|
25 | 24 |
# For coverage reports
|
26 | |
s.add_development_dependency 'coveralls'
|
|
25 |
s.add_development_dependency 'coveralls', '~> 0.8', '>= 0.8.23'
|
27 | 26 |
|
28 | 27 |
s.rubygems_version = ">= 1.6.1"
|
29 | 28 |
s.files = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ }
|
19 | 19 |
./scripts/update-gemspec
|
20 | 20 |
.PHONY: update-dependencies
|
21 | 21 |
|
|
22 |
pre-release: update-dependencies clean default
|
|
23 |
.PHONY: pre-release
|
|
24 |
|
22 | 25 |
update-version:
|
23 | 26 |
ifdef NEW_VERSION
|
|
27 |
ifneq (,$(GEMSPEC))
|
24 | 28 |
sed -i "s/\(s\.version *= *'\)[0-9]*\.[0-9]*\.[0-9]*\('\)/\1$(NEW_VERSION)\2/" $(GEMSPEC)
|
|
29 |
endif
|
25 | 30 |
else
|
26 | |
@echo -e "\033[0;NEW_VERSION is not defined. Can't update version :-(\033[0m"
|
|
31 |
@echo -e "\033[0;31mNEW_VERSION is not defined. Can't update version :-(\033[0m"
|
27 | 32 |
exit 1
|
28 | 33 |
endif
|
29 | 34 |
.PHONY: update-version
|
30 | 35 |
|
31 | 36 |
publish: .deps
|
|
37 |
ifneq (,$(GEMSPEC))
|
32 | 38 |
gem build $(GEMSPEC)
|
33 | |
gem push $$(find . -name "*.gem")
|
|
39 |
gem push $$(find . -name "*$(NEW_VERSION).gem")
|
|
40 |
else
|
|
41 |
@echo "Not publishing because there is no gemspec"
|
|
42 |
endif
|
34 | 43 |
.PHONY: publish
|
|
44 |
|
|
45 |
post-release:
|
|
46 |
@echo "No post-release needed for ruby"
|
|
47 |
.PHONY: post-release
|
35 | 48 |
|
36 | 49 |
clean: clean-ruby
|
37 | 50 |
.PHONY: clean
|
38 | 51 |
|
39 | 52 |
clean-ruby:
|
40 | |
rm -f .deps .linked .tested Gemfile.lock
|
|
53 |
rm -f .deps .linked .tested* Gemfile.lock *.gem
|
41 | 54 |
.PHONY: clean-ruby
|
3 | 3 |
module Cucumber
|
4 | 4 |
module CucumberExpressions
|
5 | 5 |
class Argument
|
6 | |
attr_reader :group
|
|
6 |
attr_reader :group, :parameter_type
|
7 | 7 |
|
8 | 8 |
def self.build(tree_regexp, text, parameter_types)
|
9 | 9 |
group = tree_regexp.match(text)
|
22 | 22 |
char_class = false
|
23 | 23 |
elsif c == '(' && !escaping && !char_class
|
24 | 24 |
@stack.push(GroupBuilder.new)
|
25 | |
group_start_stack.push(n+1)
|
|
25 |
group_start_stack.push(n + 1)
|
26 | 26 |
@non_capturing_maybe = false
|
27 | 27 |
elsif c == ')' && !escaping && !char_class
|
28 | 28 |
gb = @stack.pop
|
|
39 | 39 |
elsif (c == '<') && @non_capturing_maybe
|
40 | 40 |
@name_capturing_maybe = true
|
41 | 41 |
elsif (c == ':' || c == '!' || c == '=') && last == '?' && @non_capturing_maybe
|
42 | |
end_non_capturing_group()
|
|
42 |
end_non_capturing_group
|
43 | 43 |
elsif (c == '=' || c == '!') && last == '<' && @name_capturing_maybe
|
44 | |
end_non_capturing_group()
|
|
44 |
end_non_capturing_group
|
45 | 45 |
elsif @name_capturing_maybe
|
46 | 46 |
raise CucumberExpressionError.new("Named capture groups are not supported. See https://github.com/cucumber/cucumber/issues/329")
|
47 | 47 |
end
|
5 | 5 |
IFS=$'\n'
|
6 | 6 |
|
7 | 7 |
gemspec=$(find . -type f -maxdepth 1 -name "*.gemspec")
|
8 | |
add_dependency_lines=$(cat ${gemspec} | grep "s.add_dependency '[^']*', '")
|
|
8 |
if [ "${gemspec}" = "" ]; then
|
|
9 |
exit 0
|
|
10 |
fi
|
|
11 |
add_dependency_lines=$(cat ${gemspec} | grep "s.add_[a-z_]*dependency '[^']*'")
|
9 | 12 |
if [ $? -ne 0 ]; then
|
10 | 13 |
# No add_dependency_lines found - nothing to do
|
11 | 14 |
exit 0
|
|
15 | 18 |
|
16 | 19 |
gems=$(echo "${add_dependency_lines}" | tr -s ' ' | cut -d ' ' -f3 | cut -d"'" -f 2)
|
17 | 20 |
while read -r gem; do
|
18 | |
gem_line=$(gem list "${gem}" --remote --all --no-prerelease | grep "${gem}")
|
19 | |
latest_version=$(echo "${gem_line}" | cut -d'(' -f2 | cut -d',' -f1)
|
20 | |
cat "${gemspec}" | sed "s/s.add_dependency '${gem}', .*/s.add_dependency '${gem}', '~> ${latest_version}'/" > ${gemspec}.tmp
|
|
21 |
echo "upgrading ${gem}"
|
|
22 |
if [ "${gem}" = "bundler" ]; then
|
|
23 |
cat "${gemspec}" | sed "s/\(s.add_[a-z_]*dependency\) '${gem}'.*/\1 '${gem}', '>= 1.16.2'/" > ${gemspec}.tmp
|
|
24 |
else
|
|
25 |
gem_line=$(gem list "${gem}" --remote --all --no-prerelease | grep "^${gem}\s")
|
|
26 |
latest_patch_version=$(echo "${gem_line}" | cut -d'(' -f2 | cut -d',' -f1 | cut -d' ' -f1)
|
|
27 |
latest_minor_version=$(echo "${latest_patch_version}" | cut -d. -f1,2)
|
|
28 |
cat "${gemspec}" | sed "s/\(s.add_[a-z_]*dependency\) '${gem}'.*/\1 '${gem}', '~> ${latest_minor_version}', '>= ${latest_patch_version}'/" > ${gemspec}.tmp
|
|
29 |
fi
|
21 | 30 |
mv ${gemspec}.tmp ${gemspec}
|
22 | 31 |
done <<< "${gems}"
|
|
0 |
require 'cucumber/cucumber_expressions/argument'
|
|
1 |
require 'cucumber/cucumber_expressions/tree_regexp'
|
|
2 |
require 'cucumber/cucumber_expressions/parameter_type_registry'
|
|
3 |
|
|
4 |
module Cucumber
|
|
5 |
module CucumberExpressions
|
|
6 |
describe Argument do
|
|
7 |
it 'exposes parameter_type' do
|
|
8 |
tree_regexp = TreeRegexp.new(/three (.*) mice/)
|
|
9 |
parameter_type_registry = ParameterTypeRegistry.new
|
|
10 |
arguments = Argument.build(tree_regexp, "three blind mice", [parameter_type_registry.lookup_by_type_name("string")])
|
|
11 |
argument = arguments[0]
|
|
12 |
expect(argument.parameter_type.name).to eq("string")
|
|
13 |
end
|
|
14 |
end
|
|
15 |
end
|
|
16 |
end
|
52 | 52 |
|
53 | 53 |
it('matches single quoted string with escaped single quote') do
|
54 | 54 |
expect(match('three {string} mice', "three 'bl\\'nd' mice")).to eq(["bl'nd"])
|
|
55 |
end
|
|
56 |
|
|
57 |
it('matches single quoted empty string as empty string') do
|
|
58 |
expect(match('three {string} mice', "three '' mice")).to eq([''])
|
|
59 |
end
|
|
60 |
|
|
61 |
it('matches double quoted empty string as empty string') do
|
|
62 |
expect(match('three {string} mice', 'three "" mice')).to eq([''])
|
|
63 |
end
|
|
64 |
|
|
65 |
it('matches single quoted empty string as empty string, along with other strings') do
|
|
66 |
expect(match('three {string} and {string} mice', "three '' and 'handsome' mice")).to eq(['', 'handsome'])
|
|
67 |
end
|
|
68 |
|
|
69 |
it('matches double quoted empty string as empty string, along with other strings') do
|
|
70 |
expect(match('three {string} and {string} mice', 'three "" and "handsome" mice')).to eq(['', 'handsome'])
|
55 | 71 |
end
|
56 | 72 |
|
57 | 73 |
it 'matches escaped parentheses' do
|