Codebase list ruby-cucumber-expressions / 341da832-9c49-420d-9190-16a099694eda/upstream
Import upstream version 8.3.0 Debian Janitor 2 years ago
7 changed file(s) with 70 addition(s) and 16 deletion(s). Raw diff Collapse all Expand all
00 # -*- encoding: utf-8 -*-
11 Gem::Specification.new do |s|
22 s.name = 'cucumber-expressions'
3 s.version = '8.0.0'
3 s.version = '8.3.0'
44 s.authors = ["Aslak Hellesøy"]
55 s.description = 'Cucumber Expressions - a simpler alternative to Regular Expressions'
66 s.summary = "cucumber-expressions-#{s.version}"
1818 'source_code_uri' => 'https://github.com/cucumber/cucumber/blob/master/cucumber-expressions/ruby',
1919 }
2020
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'
2423
2524 # For coverage reports
26 s.add_development_dependency 'coveralls'
25 s.add_development_dependency 'coveralls', '~> 0.8', '>= 0.8.23'
2726
2827 s.rubygems_version = ">= 1.6.1"
2928 s.files = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ }
1919 ./scripts/update-gemspec
2020 .PHONY: update-dependencies
2121
22 pre-release: update-dependencies clean default
23 .PHONY: pre-release
24
2225 update-version:
2326 ifdef NEW_VERSION
27 ifneq (,$(GEMSPEC))
2428 sed -i "s/\(s\.version *= *'\)[0-9]*\.[0-9]*\.[0-9]*\('\)/\1$(NEW_VERSION)\2/" $(GEMSPEC)
29 endif
2530 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"
2732 exit 1
2833 endif
2934 .PHONY: update-version
3035
3136 publish: .deps
37 ifneq (,$(GEMSPEC))
3238 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
3443 .PHONY: publish
44
45 post-release:
46 @echo "No post-release needed for ruby"
47 .PHONY: post-release
3548
3649 clean: clean-ruby
3750 .PHONY: clean
3851
3952 clean-ruby:
40 rm -f .deps .linked .tested Gemfile.lock
53 rm -f .deps .linked .tested* Gemfile.lock *.gem
4154 .PHONY: clean-ruby
33 module Cucumber
44 module CucumberExpressions
55 class Argument
6 attr_reader :group
6 attr_reader :group, :parameter_type
77
88 def self.build(tree_regexp, text, parameter_types)
99 group = tree_regexp.match(text)
2222 char_class = false
2323 elsif c == '(' && !escaping && !char_class
2424 @stack.push(GroupBuilder.new)
25 group_start_stack.push(n+1)
25 group_start_stack.push(n + 1)
2626 @non_capturing_maybe = false
2727 elsif c == ')' && !escaping && !char_class
2828 gb = @stack.pop
3939 elsif (c == '<') && @non_capturing_maybe
4040 @name_capturing_maybe = true
4141 elsif (c == ':' || c == '!' || c == '=') && last == '?' && @non_capturing_maybe
42 end_non_capturing_group()
42 end_non_capturing_group
4343 elsif (c == '=' || c == '!') && last == '<' && @name_capturing_maybe
44 end_non_capturing_group()
44 end_non_capturing_group
4545 elsif @name_capturing_maybe
4646 raise CucumberExpressionError.new("Named capture groups are not supported. See https://github.com/cucumber/cucumber/issues/329")
4747 end
55 IFS=$'\n'
66
77 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 '[^']*'")
912 if [ $? -ne 0 ]; then
1013 # No add_dependency_lines found - nothing to do
1114 exit 0
1518
1619 gems=$(echo "${add_dependency_lines}" | tr -s ' ' | cut -d ' ' -f3 | cut -d"'" -f 2)
1720 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
2130 mv ${gemspec}.tmp ${gemspec}
2231 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
5252
5353 it('matches single quoted string with escaped single quote') do
5454 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'])
5571 end
5672
5773 it 'matches escaped parentheses' do