From 75bd97176c4a8e9e07c3b5a1f47960767903655b Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 06:32:56 +1000 Subject: [PATCH 01/13] Pin CI actions to full-length commit SHAs Org policy requires all actions be pinned to a full-length SHA; the floating tags blocked every Ruby test job at job setup. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7929a9840..a39ed77df 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,9 +11,9 @@ jobs: matrix: ruby: [2.3, 2.4, 2.5, 2.6, 2.7, jruby-9.3] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@a37ce9120846195fa4ece8f58b268e6043cb2f26 # v3 - name: Setup ruby - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: ${{ matrix.ruby }} - run: ./scripts/build From 3f00d71633eadc44314fa3e9c2ebffa0decee52f Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 06:33:20 +1000 Subject: [PATCH 02/13] Remove the V2 label requirement from PRs The label-checker job was the only job in pr-review.yml, and the V2 label does not exist in this fork, so every PR failed it. --- .github/workflows/pr-review.yml | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 .github/workflows/pr-review.yml diff --git a/.github/workflows/pr-review.yml b/.github/workflows/pr-review.yml deleted file mode 100644 index 5239309ef..000000000 --- a/.github/workflows/pr-review.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: PR Review - -on: - pull_request: - types: - - opened - - repoened - - edited - - synchronize - - labeled - - unlabeled - -concurrency: - group: ${{ github.workflow }} - ${{ github.ref }} - cancel-in-progress: true - -jobs: - label-checker: - runs-on: ubuntu-latest - name: Label Checker - steps: - - name: Check Labels - uses: docker://agilepathway/pull-request-label-checker:latest - with: - one_of: V2 - repo_token: ${{ secrets.GITHUB_TOKEN }} - \ No newline at end of file From f4391b9c802e299f9d433953301dbcd374962d61 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 07:50:44 +1000 Subject: [PATCH 03/13] Stop the Ruby matrix cancelling sibling jobs on first failure fail-fast defaults to true, so one failing version cancelled the rest and hid whether they actually passed. --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a39ed77df..9d2747313 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,7 @@ jobs: runs-on: ubuntu-latest name: Ruby ${{ matrix.ruby }} tests strategy: + fail-fast: false matrix: ruby: [2.3, 2.4, 2.5, 2.6, 2.7, jruby-9.3] steps: From 99954193e623bea70b1f7a8bf52918d54b36535e Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 07:50:59 +1000 Subject: [PATCH 04/13] Use the Minitest constant instead of the removed MiniTest alias minitest dropped the MiniTest compatibility alias; spec_helper already uses Minitest, so this was the last reference to the old spelling. --- spec/recurly_v2/api/errors_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/recurly_v2/api/errors_spec.rb b/spec/recurly_v2/api/errors_spec.rb index 97553fc46..de4420643 100644 --- a/spec/recurly_v2/api/errors_spec.rb +++ b/spec/recurly_v2/api/errors_spec.rb @@ -13,7 +13,7 @@ end describe "when response assigned" do - let(:response) { MiniTest::Mock.new } + let(:response) { Minitest::Mock.new } let(:error) { RecurlyV2::API::ResponseError.new nil, response } describe "when xml already cached" do From 24f0d361307b5cf2392ceb2a13ba702b1cc1cec0 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 07:51:18 +1000 Subject: [PATCH 05/13] Unpin dev dependencies that cannot load on modern Ruby Both pins held gems that require stdlib files no longer shipped by default, and spec/environment.rb swallows $stderr, so the resulting LoadErrors surfaced as a silent exit with no test output at all. --- recurly.gemspec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/recurly.gemspec b/recurly.gemspec index c3f89751e..b5e176c9e 100644 --- a/recurly.gemspec +++ b/recurly.gemspec @@ -25,10 +25,14 @@ Gem::Specification.new do |s| s.add_development_dependency 'nokogiri', '~> 1.8', '>= 1.8.2' end - s.add_development_dependency 'rake', '~> 11.3' + # logger left the default gems in Ruby 4.0; spec_helper requires it. + s.add_development_dependency 'logger' + # rake 11 requires ostruct, gone from Ruby 4.0's default gems. + s.add_development_dependency 'rake', '>= 11.3' s.add_development_dependency 'minitest', '~> 5.8', '>= 5.8.0' s.add_development_dependency 'addressable', '~> 2.4', '>= 2.4.0' - s.add_development_dependency 'webmock', '~> 2.3', '>= 2.3.2' + # webmock 2.x requires base64, gone from Ruby 3.4's default gems. + s.add_development_dependency 'webmock', '>= 2.3.2' s.add_development_dependency 'simplecov', '~> 0' if RUBY_PLATFORM != 'java' && !ENV['CI'] From cf35b035d824dcbece11ce2b54390c94a9a89a80 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 07:51:44 +1000 Subject: [PATCH 06/13] Capture XML#each's block explicitly Ruby 3.0 removed the bare Proc.new implicit-block idiom, so XML#each raised ArgumentError on every Ruby from 3.0 on. --- lib/recurly_v2/xml/nokogiri.rb | 6 +++--- lib/recurly_v2/xml/rexml.rb | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/recurly_v2/xml/nokogiri.rb b/lib/recurly_v2/xml/nokogiri.rb index 8853b8994..04b55b47c 100644 --- a/lib/recurly_v2/xml/nokogiri.rb +++ b/lib/recurly_v2/xml/nokogiri.rb @@ -18,10 +18,10 @@ def each_element xpath = nil elements.each { |el| yield el } end - def each element = root + def each element = root, &block element.elements.each do |el| - yield el - each el, &Proc.new + block.call el + each el, &block end end diff --git a/lib/recurly_v2/xml/rexml.rb b/lib/recurly_v2/xml/rexml.rb index 7c25d5564..741f47812 100644 --- a/lib/recurly_v2/xml/rexml.rb +++ b/lib/recurly_v2/xml/rexml.rb @@ -19,10 +19,10 @@ def each_element xpath = nil root.each_element(xpath) { |el| yield el } end - def each element = root + def each element = root, &block element.each_element do |el| - yield el - each el, &Proc.new + block.call el + each el, &block end end From 72c9d9e7c65e18c77573db78def70ca238e67f22 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 07:58:17 +1000 Subject: [PATCH 07/13] Compare marshalled instance variables as sets Ruby 3.x onward does not preserve instance variable order across a Marshal round-trip; the assertion only cares that the set matches. --- spec/recurly_v2/adjustment_spec.rb | 2 +- spec/recurly_v2/billing_info_spec.rb | 2 +- spec/recurly_v2/credit_payment_spec.rb | 2 +- spec/recurly_v2/transaction_spec.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/recurly_v2/adjustment_spec.rb b/spec/recurly_v2/adjustment_spec.rb index 0c1c531d6..b2371d229 100644 --- a/spec/recurly_v2/adjustment_spec.rb +++ b/spec/recurly_v2/adjustment_spec.rb @@ -117,7 +117,7 @@ adjustment = Adjustment.find 'abcdef1234567890' adjustment_from_dump = Marshal.load(Marshal.dump(adjustment)) - adjustment.instance_variables.must_equal adjustment_from_dump.instance_variables + adjustment.instance_variables.sort.must_equal adjustment_from_dump.instance_variables.sort end it 'must return the same values' do diff --git a/spec/recurly_v2/billing_info_spec.rb b/spec/recurly_v2/billing_info_spec.rb index 394cf986f..3738368e8 100644 --- a/spec/recurly_v2/billing_info_spec.rb +++ b/spec/recurly_v2/billing_info_spec.rb @@ -229,7 +229,7 @@ billing_info = BillingInfo.find 'abcdef1234567890' billing_info_from_dump = Marshal.load(Marshal.dump(billing_info)) - billing_info.instance_variables.must_equal billing_info_from_dump.instance_variables + billing_info.instance_variables.sort.must_equal billing_info_from_dump.instance_variables.sort end it 'must return the same values' do diff --git a/spec/recurly_v2/credit_payment_spec.rb b/spec/recurly_v2/credit_payment_spec.rb index fb795cb64..613670219 100644 --- a/spec/recurly_v2/credit_payment_spec.rb +++ b/spec/recurly_v2/credit_payment_spec.rb @@ -34,7 +34,7 @@ credit_payment = CreditPayment.find('12345') credit_payment_from_dump = Marshal.load(Marshal.dump(credit_payment)) - credit_payment.instance_variables.must_equal credit_payment_from_dump.instance_variables + credit_payment.instance_variables.sort.must_equal credit_payment_from_dump.instance_variables.sort end it 'must return the same values' do diff --git a/spec/recurly_v2/transaction_spec.rb b/spec/recurly_v2/transaction_spec.rb index dea2a1bf1..19264af1b 100644 --- a/spec/recurly_v2/transaction_spec.rb +++ b/spec/recurly_v2/transaction_spec.rb @@ -62,7 +62,7 @@ transaction = Transaction.find 'abcdef1234567890' transaction_from_dump = Marshal.load(Marshal.dump(transaction)) - transaction.instance_variables.must_equal transaction_from_dump.instance_variables + transaction.instance_variables.sort.must_equal transaction_from_dump.instance_variables.sort end it 'must return the same values' do From bf5c3b0f30c74c449107cfa907287b93b42cd3c2 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 07:58:29 +1000 Subject: [PATCH 08/13] Test through Ruby 4.0.5 Extends the matrix over the 3.x line up to 4.0.5, the version Evergreen runs. Versions are quoted so YAML does not read them as floats. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d2747313..21c3f0e89 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ jobs: strategy: fail-fast: false matrix: - ruby: [2.3, 2.4, 2.5, 2.6, 2.7, jruby-9.3] + ruby: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', '4.0.5', 'jruby-9.3'] steps: - uses: actions/checkout@a37ce9120846195fa4ece8f58b268e6043cb2f26 # v3 - name: Setup ruby From 2dd9f79ccd5776457e899a488cff25eb137d7cc7 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 08:02:38 +1000 Subject: [PATCH 09/13] Let spec stderr through when the run fails The buffer was discarded unconditionally, so a LoadError in spec_helper produced a silent exit with no test output and no cause. --- spec/environment.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spec/environment.rb b/spec/environment.rb index 4d76a48eb..2d276afeb 100644 --- a/spec/environment.rb +++ b/spec/environment.rb @@ -3,8 +3,12 @@ require 'stringio' old_stderr, $stderr = $stderr, StringIO.new at_exit do - $stderr.rewind - $stderr.lines.each { |line| old_stderr.puts line if line.include? lib } + # Warnings from anywhere but lib are noise, but suppressing them unconditionally + # also swallows load errors and leaves a failing run with no output at all. + failing = !$!.nil? && !($!.is_a?(SystemExit) && $!.success?) + buffered, $stderr = $stderr, old_stderr + buffered.rewind + buffered.each_line { |line| old_stderr.puts line if failing || line.include?(lib) } end case ENV['XML'] From 0a40896c0a193e169bab6b59f1c1698bf4b13c97 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 08:09:56 +1000 Subject: [PATCH 10/13] Support minitest 6, which Ruby 4.0 bundles minitest 6 removed the global must_* expectations and Minitest::Mock, and rejects assert_equal nil. The two shim gems restore the first two for every Ruby in the matrix; must_be_nil works on minitest 5 and 6. --- recurly.gemspec | 6 +++++- spec/recurly_v2/adjustment_spec.rb | 4 ++-- spec/recurly_v2/api/errors_spec.rb | 8 ++++---- spec/recurly_v2/billing_info_spec.rb | 2 +- spec/recurly_v2/gift_card_spec.rb | 8 ++++---- spec/recurly_v2/resource_spec.rb | 4 ++-- spec/recurly_v2/subscription_spec.rb | 6 +++--- spec/spec_helper.rb | 2 ++ 8 files changed, 23 insertions(+), 17 deletions(-) diff --git a/recurly.gemspec b/recurly.gemspec index b5e176c9e..4e79f1f2d 100644 --- a/recurly.gemspec +++ b/recurly.gemspec @@ -29,7 +29,11 @@ Gem::Specification.new do |s| s.add_development_dependency 'logger' # rake 11 requires ostruct, gone from Ruby 4.0's default gems. s.add_development_dependency 'rake', '>= 11.3' - s.add_development_dependency 'minitest', '~> 5.8', '>= 5.8.0' + # Ruby 4.0 bundles minitest 6, which dropped both the global must_* expectations + # and Minitest::Mock; these two gems supply them for the whole matrix. + s.add_development_dependency 'minitest', '>= 5.8' + s.add_development_dependency 'minitest-global_expectations' + s.add_development_dependency 'minitest-mock' s.add_development_dependency 'addressable', '~> 2.4', '>= 2.4.0' # webmock 2.x requires base64, gone from Ruby 3.4's default gems. s.add_development_dependency 'webmock', '>= 2.3.2' diff --git a/spec/recurly_v2/adjustment_spec.rb b/spec/recurly_v2/adjustment_spec.rb index b2371d229..9fe79b840 100644 --- a/spec/recurly_v2/adjustment_spec.rb +++ b/spec/recurly_v2/adjustment_spec.rb @@ -85,7 +85,7 @@ juris_detail.tax_in_cents[:USD].must_equal 115 juris_detail.rate.must_equal 0.056 juris_detail.description.must_equal 'Sales Tax' - juris_detail.jurisdiction_name.must_equal nil + juris_detail.jurisdiction_name.must_be_nil end it "must raise an exception when unavailable" do @@ -107,7 +107,7 @@ stub_api_request :get, 'adjustments/abcdef1234567890', 'adjustments/show-200-nosub' adjustment = Adjustment.find 'abcdef1234567890' - adjustment.subscription.must_equal nil + adjustment.subscription.must_be_nil end describe '#marshal_dump' do diff --git a/spec/recurly_v2/api/errors_spec.rb b/spec/recurly_v2/api/errors_spec.rb index de4420643..6dc630aa7 100644 --- a/spec/recurly_v2/api/errors_spec.rb +++ b/spec/recurly_v2/api/errors_spec.rb @@ -8,7 +8,7 @@ let(:error) { RecurlyV2::API::ResponseError.new nil, nil } it "must return nil" do - error.send(:xml).must_equal nil + error.send(:xml).must_be_nil end end @@ -28,7 +28,7 @@ before { response.expect :body, nil } it "must return nil" do - error.send(:xml).must_equal nil + error.send(:xml).must_be_nil end end @@ -36,7 +36,7 @@ before { 2.times { response.expect :body, '' } } it "must return nil" do - error.send(:xml).must_equal nil + error.send(:xml).must_be_nil end end @@ -54,7 +54,7 @@ before { 3.times { response.expect :body, html } } it "must return nil" do - error.send(:xml).must_equal nil + error.send(:xml).must_be_nil end end end diff --git a/spec/recurly_v2/billing_info_spec.rb b/spec/recurly_v2/billing_info_spec.rb index 3738368e8..b43432dc0 100644 --- a/spec/recurly_v2/billing_info_spec.rb +++ b/spec/recurly_v2/billing_info_spec.rb @@ -129,7 +129,7 @@ it "is accessible as an attribute" do billing_info_without_cc_bin_country = BillingInfo.find 'without-cc-bin' - billing_info_without_cc_bin_country.cc_bin_country.must_equal nil + billing_info_without_cc_bin_country.cc_bin_country.must_be_nil billing_info_with_cc_bin_country = BillingInfo.find 'with-cc-bin' billing_info_with_cc_bin_country.cc_bin_country.must_equal 'US' diff --git a/spec/recurly_v2/gift_card_spec.rb b/spec/recurly_v2/gift_card_spec.rb index 169800f00..d60e3a8cc 100644 --- a/spec/recurly_v2/gift_card_spec.rb +++ b/spec/recurly_v2/gift_card_spec.rb @@ -36,8 +36,8 @@ gift_card.balance_in_cents.must_equal 1_000 gift_card.currency.must_equal "USD" gift_card.created_at.must_equal DateTime.parse("2016-07-28T00:01:48Z") - gift_card.canceled_at.must_equal nil - gift_card.delivered_at.must_equal nil + gift_card.canceled_at.must_be_nil + gift_card.delivered_at.must_be_nil gift_card.id.must_equal 2004005808969875135 gift_card.product_code.must_equal "gift_card" gift_card.redeemed_at.must_equal DateTime.parse("2016-07-28T00:01:46Z") @@ -54,7 +54,7 @@ delivery.must_be_instance_of RecurlyV2::Delivery delivery.method.must_equal "email" - delivery.deliver_at.must_equal nil + delivery.deliver_at.must_be_nil delivery.email_address.must_equal "john@example.com" delivery.first_name.must_equal "John" delivery.last_name.must_equal "Smith" @@ -64,7 +64,7 @@ address = delivery.address address.address1.must_equal "400 Alabama St" - address.address2.must_equal nil + address.address2.must_be_nil address.city.must_equal "San Francisco" address.state.must_equal "CA" address.zip.must_equal "94110" diff --git a/spec/recurly_v2/resource_spec.rb b/spec/recurly_v2/resource_spec.rb index 2102673c5..3fb8b060c 100644 --- a/spec/recurly_v2/resource_spec.rb +++ b/spec/recurly_v2/resource_spec.rb @@ -569,12 +569,12 @@ def record.to_param() 1 end it "must return nil if persisted with changes" do record.persist! record[:uuid] = 'changed' - record.valid?.must_equal nil + record.valid?.must_be_nil end it "must return nil if not persisted with changes and no errors" do record[:uuid] = 'changed' - record.valid?.must_equal nil + record.valid?.must_be_nil end it "must return false if it has errors" do diff --git a/spec/recurly_v2/subscription_spec.rb b/spec/recurly_v2/subscription_spec.rb index 7ec9cdede..06dc8dcca 100644 --- a/spec/recurly_v2/subscription_spec.rb +++ b/spec/recurly_v2/subscription_spec.rb @@ -347,7 +347,7 @@ stub_api_request :get, 'subscriptions/abcdef1234567890', 'subscriptions/show-200-noinvoice' subscription = Subscription.find 'abcdef1234567890' - subscription.invoice.must_equal nil + subscription.invoice.must_be_nil end end end @@ -405,12 +405,12 @@ it "should be able to pause and resume a subscription" do sub = RecurlyV2::Subscription.find('abcdef1234567890') - sub.paused_at.must_equal nil + sub.paused_at.must_be_nil sub.pause(1).must_equal true sub.paused_at.must_be_instance_of DateTime sub.remaining_pause_cycles.must_equal 1 sub.resume.must_equal true - sub.remaining_pause_cycles.must_equal nil + sub.remaining_pause_cycles.must_be_nil end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f43ae66d2..59a7c01b4 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -6,6 +6,8 @@ require 'cgi' require 'minitest/autorun' require 'minitest/spec' +require 'minitest/global_expectations' +require 'minitest/mock' require 'webmock' WebMock.enable! From ef99fba5ee9da7e1b5762f7f4684588bae94efe5 Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 08:14:13 +1000 Subject: [PATCH 11/13] Hold minitest to the 5.x line across the matrix --- recurly.gemspec | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/recurly.gemspec b/recurly.gemspec index 4e79f1f2d..d480401c7 100644 --- a/recurly.gemspec +++ b/recurly.gemspec @@ -29,11 +29,12 @@ Gem::Specification.new do |s| s.add_development_dependency 'logger' # rake 11 requires ostruct, gone from Ruby 4.0's default gems. s.add_development_dependency 'rake', '>= 11.3' - # Ruby 4.0 bundles minitest 6, which dropped both the global must_* expectations - # and Minitest::Mock; these two gems supply them for the whole matrix. - s.add_development_dependency 'minitest', '>= 5.8' + # Held to the 5.x line: minitest 6 needs Ruby >= 3.2, dropped the global must_* + # expectations this suite is written in, and moved Minitest::Mock to a gem that + # itself needs Ruby >= 3.1 — none of which the old half of the matrix can meet. + s.add_development_dependency 'minitest', '~> 5.8' + # Restores must_* if a bundled minitest 6 wins activation over the pin above. s.add_development_dependency 'minitest-global_expectations' - s.add_development_dependency 'minitest-mock' s.add_development_dependency 'addressable', '~> 2.4', '>= 2.4.0' # webmock 2.x requires base64, gone from Ruby 3.4's default gems. s.add_development_dependency 'webmock', '>= 2.3.2' From b4b1c0df40062e9f95b25c2433b14f0a3307354d Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 08:17:30 +1000 Subject: [PATCH 12/13] Supply Minitest::Mock on Ruby 4.0 Ruby 4.0's bundled minitest 6 wins activation over the gemspec pin, and it no longer ships Mock. --- recurly.gemspec | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recurly.gemspec b/recurly.gemspec index d480401c7..8e0201b97 100644 --- a/recurly.gemspec +++ b/recurly.gemspec @@ -35,6 +35,11 @@ Gem::Specification.new do |s| s.add_development_dependency 'minitest', '~> 5.8' # Restores must_* if a bundled minitest 6 wins activation over the pin above. s.add_development_dependency 'minitest-global_expectations' + # On Ruby 4.0 the bundled minitest 6 does win, and it no longer ships + # Minitest::Mock. Earlier Rubies keep getting Mock from minitest 5 itself. + if RUBY_VERSION >= '4.0' + s.add_development_dependency 'minitest-mock' + end s.add_development_dependency 'addressable', '~> 2.4', '>= 2.4.0' # webmock 2.x requires base64, gone from Ruby 3.4's default gems. s.add_development_dependency 'webmock', '>= 2.3.2' From 7ec0c980019428f9290983f669aa970e877fcd8a Mon Sep 17 00:00:00 2001 From: Grant Cox Date: Thu, 3 Sep 2026 08:52:58 +1000 Subject: [PATCH 13/13] Track the latest Ruby 4.x alongside the pinned 4.0.5 Evergreen is on 4.0.5 today, so keep that exact version covered, and add a '4' entry that setup-ruby resolves to the newest 4.x it knows about. --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21c3f0e89..5230ca2cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,10 @@ jobs: strategy: fail-fast: false matrix: - ruby: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', '4.0.5', 'jruby-9.3'] + # '4' is a prefix match resolved against the version list baked into the + # setup-ruby commit pinned below, so it only tracks new 4.x releases as far + # as that pin. Bump the pin to pick up newer ones. + ruby: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', '3.3', '3.4', '4.0.5', '4', 'jruby-9.3'] steps: - uses: actions/checkout@a37ce9120846195fa4ece8f58b268e6043cb2f26 # v3 - name: Setup ruby