New Upstream Release - ruby-cucumber-expressions

Ready changes

Summary

Merged new upstream version: 8.3.0 (was: 8.0.0).

Resulting package

Built on 2022-12-30T02:58 (took 4m9s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases ruby-cucumber-expressions

Lintian Result

Diff

diff --git a/cucumber-expressions.gemspec b/cucumber-expressions.gemspec
index b2dcc60..945aede 100644
--- a/cucumber-expressions.gemspec
+++ b/cucumber-expressions.gemspec
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
 Gem::Specification.new do |s|
   s.name        = 'cucumber-expressions'
-  s.version     = '8.0.0'
+  s.version     = '8.3.0'
   s.authors     = ["Aslak Hellesøy"]
   s.description = 'Cucumber Expressions - a simpler alternative to Regular Expressions'
   s.summary     = "cucumber-expressions-#{s.version}"
@@ -19,12 +19,11 @@ Gem::Specification.new do |s|
                     'source_code_uri'   => 'https://github.com/cucumber/cucumber/blob/master/cucumber-expressions/ruby',
                   }
 
-  s.add_development_dependency 'bundler'
-  s.add_development_dependency 'rake',      '~> 12.3'
-  s.add_development_dependency 'rspec',     '~> 3.7'
+  s.add_development_dependency 'rake', '~> 13.0', '>= 13.0.1'
+  s.add_development_dependency 'rspec', '~> 3.9', '>= 3.9.0'
 
   # For coverage reports
-  s.add_development_dependency 'coveralls'
+  s.add_development_dependency 'coveralls', '~> 0.8', '>= 0.8.23'
 
   s.rubygems_version = ">= 1.6.1"
   s.files            = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ }
diff --git a/debian/changelog b/debian/changelog
index 8621ef4..3b86483 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-ruby-cucumber-expressions (8.0.0-2) UNRELEASED; urgency=medium
+ruby-cucumber-expressions (8.3.0-1) UNRELEASED; urgency=medium
 
   [ James Valleroy ]
   * Add upstream/metadata
@@ -15,8 +15,9 @@ ruby-cucumber-expressions (8.0.0-2) UNRELEASED; urgency=medium
   * Bump debhelper from old 12 to 13.
   * Update standards version to 4.5.1, no changes needed.
   * Update standards version to 4.6.1, no changes needed.
+  * New upstream release.
 
- -- James Valleroy <jvalleroy@mailbox.org>  Thu, 15 Aug 2019 07:15:28 -0400
+ -- James Valleroy <jvalleroy@mailbox.org>  Fri, 30 Dec 2022 02:54:59 -0000
 
 ruby-cucumber-expressions (8.0.0-1) unstable; urgency=medium
 
diff --git a/default.mk b/default.mk
index 081d5a0..dd1f22e 100644
--- a/default.mk
+++ b/default.mk
@@ -20,23 +20,36 @@ update-dependencies:
 	./scripts/update-gemspec
 .PHONY: update-dependencies
 
+pre-release: update-dependencies clean default
+.PHONY: pre-release
+
 update-version:
 ifdef NEW_VERSION
+ifneq (,$(GEMSPEC))
 	sed -i "s/\(s\.version *= *'\)[0-9]*\.[0-9]*\.[0-9]*\('\)/\1$(NEW_VERSION)\2/" $(GEMSPEC)
+endif
 else
-	@echo -e "\033[0;NEW_VERSION is not defined. Can't update version :-(\033[0m"
+	@echo -e "\033[0;31mNEW_VERSION is not defined. Can't update version :-(\033[0m"
 	exit 1
 endif
 .PHONY: update-version
 
 publish: .deps
+ifneq (,$(GEMSPEC))
 	gem build $(GEMSPEC)
-	gem push $$(find . -name "*.gem")
+	gem push $$(find . -name "*$(NEW_VERSION).gem")
+else
+	@echo "Not publishing because there is no gemspec"
+endif
 .PHONY: publish
 
+post-release:
+	@echo "No post-release needed for ruby"
+.PHONY: post-release
+
 clean: clean-ruby
 .PHONY: clean
 
 clean-ruby:
-	rm -f .deps .linked .tested Gemfile.lock
+	rm -f .deps .linked .tested* Gemfile.lock *.gem
 .PHONY: clean-ruby
diff --git a/lib/cucumber/cucumber_expressions/argument.rb b/lib/cucumber/cucumber_expressions/argument.rb
index dd6f641..4239ca1 100644
--- a/lib/cucumber/cucumber_expressions/argument.rb
+++ b/lib/cucumber/cucumber_expressions/argument.rb
@@ -4,7 +4,7 @@ require 'cucumber/cucumber_expressions/errors'
 module Cucumber
   module CucumberExpressions
     class Argument
-      attr_reader :group
+      attr_reader :group, :parameter_type
 
       def self.build(tree_regexp, text, parameter_types)
         group = tree_regexp.match(text)
diff --git a/lib/cucumber/cucumber_expressions/tree_regexp.rb b/lib/cucumber/cucumber_expressions/tree_regexp.rb
index 749a07b..c5d9c98 100644
--- a/lib/cucumber/cucumber_expressions/tree_regexp.rb
+++ b/lib/cucumber/cucumber_expressions/tree_regexp.rb
@@ -23,7 +23,7 @@ module Cucumber
             char_class = false
           elsif c == '(' && !escaping && !char_class
             @stack.push(GroupBuilder.new)
-            group_start_stack.push(n+1)
+            group_start_stack.push(n + 1)
             @non_capturing_maybe = false
           elsif c == ')' && !escaping && !char_class
             gb = @stack.pop
@@ -40,9 +40,9 @@ module Cucumber
           elsif (c == '<') && @non_capturing_maybe
             @name_capturing_maybe = true
           elsif (c == ':' || c == '!' || c == '=') && last == '?' && @non_capturing_maybe
-            end_non_capturing_group()
+            end_non_capturing_group
           elsif (c == '=' || c == '!') && last == '<' && @name_capturing_maybe
-            end_non_capturing_group()
+            end_non_capturing_group
           elsif @name_capturing_maybe
             raise CucumberExpressionError.new("Named capture groups are not supported. See https://github.com/cucumber/cucumber/issues/329")
           end
diff --git a/scripts/update-gemspec b/scripts/update-gemspec
index f415b40..4e73a0a 100755
--- a/scripts/update-gemspec
+++ b/scripts/update-gemspec
@@ -6,7 +6,10 @@ set -uf -o pipefail
 IFS=$'\n'
 
 gemspec=$(find . -type f -maxdepth 1 -name "*.gemspec")
-add_dependency_lines=$(cat ${gemspec} | grep "s.add_dependency '[^']*', '")
+if [ "${gemspec}" = "" ]; then
+  exit 0
+fi
+add_dependency_lines=$(cat ${gemspec} | grep "s.add_[a-z_]*dependency '[^']*'")
 if [ $? -ne 0 ]; then
   # No add_dependency_lines found - nothing to do
   exit 0
@@ -16,8 +19,14 @@ set -e
 
 gems=$(echo "${add_dependency_lines}" | tr -s ' ' | cut -d ' ' -f3 | cut -d"'" -f 2)
 while read -r gem; do
-  gem_line=$(gem list "${gem}" --remote --all --no-prerelease | grep "${gem}")
-  latest_version=$(echo "${gem_line}" | cut -d'(' -f2 | cut -d',' -f1)
-  cat "${gemspec}" | sed "s/s.add_dependency '${gem}', .*/s.add_dependency '${gem}', '~> ${latest_version}'/" > ${gemspec}.tmp
+  echo "upgrading ${gem}"
+  if [ "${gem}" = "bundler" ]; then
+    cat "${gemspec}" | sed "s/\(s.add_[a-z_]*dependency\) '${gem}'.*/\1 '${gem}', '>= 1.16.2'/" > ${gemspec}.tmp
+  else
+    gem_line=$(gem list "${gem}" --remote --all --no-prerelease | grep "^${gem}\s")
+    latest_patch_version=$(echo "${gem_line}" | cut -d'(' -f2 | cut -d',' -f1 | cut -d' ' -f1)
+    latest_minor_version=$(echo "${latest_patch_version}" | cut -d. -f1,2)
+    cat "${gemspec}" | sed "s/\(s.add_[a-z_]*dependency\) '${gem}'.*/\1 '${gem}', '~> ${latest_minor_version}', '>= ${latest_patch_version}'/" > ${gemspec}.tmp
+  fi
   mv ${gemspec}.tmp ${gemspec}
 done <<< "${gems}"
diff --git a/spec/cucumber/cucumber_expressions/argument_spec.rb b/spec/cucumber/cucumber_expressions/argument_spec.rb
new file mode 100644
index 0000000..136c741
--- /dev/null
+++ b/spec/cucumber/cucumber_expressions/argument_spec.rb
@@ -0,0 +1,17 @@
+require 'cucumber/cucumber_expressions/argument'
+require 'cucumber/cucumber_expressions/tree_regexp'
+require 'cucumber/cucumber_expressions/parameter_type_registry'
+
+module Cucumber
+  module CucumberExpressions
+    describe Argument do
+      it 'exposes parameter_type' do
+        tree_regexp = TreeRegexp.new(/three (.*) mice/)
+        parameter_type_registry = ParameterTypeRegistry.new
+        arguments = Argument.build(tree_regexp, "three blind mice", [parameter_type_registry.lookup_by_type_name("string")])
+        argument = arguments[0]
+        expect(argument.parameter_type.name).to eq("string")
+      end
+    end
+  end
+end
diff --git a/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb b/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
index df84f3d..9a2723c 100644
--- a/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
+++ b/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
@@ -55,6 +55,22 @@ module Cucumber
         expect(match('three {string} mice', "three 'bl\\'nd' mice")).to eq(["bl'nd"])
       end
 
+      it('matches single quoted empty string as empty string') do
+        expect(match('three {string} mice', "three '' mice")).to eq([''])
+      end
+
+      it('matches double quoted empty string as empty string') do
+        expect(match('three {string} mice', 'three "" mice')).to eq([''])
+      end
+
+      it('matches single quoted empty string as empty string, along with other strings') do
+        expect(match('three {string} and {string} mice', "three '' and 'handsome' mice")).to eq(['', 'handsome'])
+      end
+
+      it('matches double quoted empty string as empty string, along with other strings') do
+        expect(match('three {string} and {string} mice', 'three "" and "handsome" mice')).to eq(['', 'handsome'])
+      end
+
       it 'matches escaped parentheses' do
         expect(match('three \\(exceptionally) {string} mice', 'three (exceptionally) "blind" mice')).to eq(['blind'])
       end

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/share/rubygems-integration/all/specifications/cucumber-expressions-8.3.0.gemspec

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/share/rubygems-integration/all/specifications/cucumber-expressions-8.0.0.gemspec

No differences were encountered in the control files

More details

Full run details