From f62f97e51849297c93d52b311b812e64c753e083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Fri, 1 Nov 2024 18:00:54 +0100 Subject: [PATCH 1/3] Ruby 3.4 replaces initial backtick by single quote This prevents test error such as: ~~~cucumber Scenario: specify a method does not throw an expection # features/its.feature:145 Given a file named "example_spec.rb" with: # aruba-2.2.0/lib/aruba/cucumber/file.rb:26 """ class Klass; end describe Klass do subject { Klass.new } its(:foo) { will_not raise_error } end """ When I run rspec # features/step_definitions/additional_cli_steps.rb:1 Then the example should fail # features/step_definitions/additional_cli_steps.rb:23 And the output should contain "Failure/Error: its(:foo) { will_not raise_error }" # aruba-2.2.0/lib/aruba/cucumber/command.rb:123 And the output should contain "expected no Exception, got # with backtrace: + # ./example_spec.rb:5:in 'block (2 levels) in ' + # ./example_spec.rb:5:in 'block (2 levels) in ' + +Finished in 0.01104 seconds (files took 0.05894 seconds to load) +1 example, 1 failure + +Failed examples: + +rspec ./example_spec.rb:5 # Klass foo is expected not to raise Exception (RSpec::Expectations::ExpectationNotMetError) :42:in 'Array#each' features/its.feature:158:in `the output should contain "expected no Exception, got # Date: Sun, 3 Nov 2024 21:15:30 +0000 Subject: [PATCH 2/3] Support versions are now Ruby 3 and latest version of RSpec --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d3e58e..83e8056 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,7 @@ jobs: strategy: matrix: ruby: + - '3.4' - '3.3' - '3.2' - '3.1' From 172253283f4ace72e395143c8cfeb36e22ef0de0 Mon Sep 17 00:00:00 2001 From: Jon Rowe Date: Sun, 3 Nov 2024 22:58:52 +0000 Subject: [PATCH 3/3] Port cucumber fix across from rspec-core --- script/test_all | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/script/test_all b/script/test_all index 0ba5be3..b33690b 100755 --- a/script/test_all +++ b/script/test_all @@ -25,6 +25,10 @@ if ruby -e "exit(defined?(RUBY_PLATFORM) && RUBY_PLATFORM == 'java')"; then # This is JRUBY which requires this one weird path trick... PATH="${PWD}/bin:$PATH" \ bundle exec cucumber --strict +elif ruby -e "exit(RUBY_VERSION.to_f >= 3.4)"; then + # This is a monkey patch to fix an issue with cucumber using outdated hash syntax, remove when cucumber is updated or ruby 3.4 released + sed -i '$i\class Hash; alias :__initialize :initialize; def initialize(*args, **_kw, &block) = __initialize(*args, &block); end' bin/cucumber + bin/cucumber --strict else bundle exec cucumber --strict fi;