From d1ac223df0b0bdebfe62853f26336bf2562682b0 Mon Sep 17 00:00:00 2001 From: Daniel Azuma Date: Tue, 13 Jan 2026 16:47:13 -0800 Subject: [PATCH] chore: Add Ruby 4.0 to CI Signed-off-by: Daniel Azuma --- .github/workflows/ci.yml | 11 +++++++---- .github/workflows/release-hook-on-closed.yml | 8 +++----- .github/workflows/release-hook-on-push.yml | 8 +++----- .github/workflows/release-perform.yml | 8 +++----- .github/workflows/release-request.yml | 8 +++----- .github/workflows/release-retry.yml | 8 +++----- .rubocop.yml | 2 ++ .toys/.toys.rb | 4 ++-- .toys/ci.rb | 2 +- Gemfile | 14 +++++++++----- 10 files changed, 36 insertions(+), 37 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index faf34cc..ce91136 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,10 @@ jobs: ruby: "3.4" flags: "--test --cucumber" - os: ubuntu-latest - ruby: "3.4" + ruby: "4.0" + flags: "--test --cucumber" + - os: ubuntu-latest + ruby: "4.0" flags: "--rubocop --yard --build" - os: ubuntu-latest ruby: jruby @@ -44,10 +47,10 @@ jobs: # ruby: truffleruby # flags: "--test --cucumber" - os: macos-latest - ruby: "3.4" + ruby: "4.0" flags: "--test --cucumber" - os: windows-latest - ruby: "3.4" + ruby: "4.0" flags: "--test --cucumber" fail-fast: false runs-on: ${{ matrix.os }} @@ -57,7 +60,7 @@ jobs: with: ruby-version: ${{ matrix.ruby }} - name: Checkout repo - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install dependencies shell: bash run: "bundle install && gem install --no-document toys" diff --git a/.github/workflows/release-hook-on-closed.yml b/.github/workflows/release-hook-on-closed.yml index fb3ebd3..090ca4d 100644 --- a/.github/workflows/release-hook-on-closed.yml +++ b/.github/workflows/release-hook-on-closed.yml @@ -12,16 +12,14 @@ permissions: jobs: release-process-request: if: ${{ github.repository == 'cloudevents/sdk-ruby' }} - env: - ruby_version: "3.4" runs-on: ubuntu-latest steps: - - name: Install Ruby ${{ env.ruby_version }} + - name: Install Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ env.ruby_version }} + ruby-version: "4.0" - name: Checkout repo - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Toys run: "gem install --no-document toys" - name: Process release request diff --git a/.github/workflows/release-hook-on-push.yml b/.github/workflows/release-hook-on-push.yml index 608cf9a..d0bf61e 100644 --- a/.github/workflows/release-hook-on-push.yml +++ b/.github/workflows/release-hook-on-push.yml @@ -12,16 +12,14 @@ permissions: jobs: release-update-open-requests: if: ${{ github.repository == 'cloudevents/sdk-ruby' }} - env: - ruby_version: "3.4" runs-on: ubuntu-latest steps: - - name: Install Ruby ${{ env.ruby_version }} + - name: Install Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ env.ruby_version }} + ruby-version: "4.0" - name: Checkout repo - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Toys run: "gem install --no-document toys" - name: Update open releases diff --git a/.github/workflows/release-perform.yml b/.github/workflows/release-perform.yml index cd41f07..a9c0ea5 100644 --- a/.github/workflows/release-perform.yml +++ b/.github/workflows/release-perform.yml @@ -22,16 +22,14 @@ permissions: jobs: release-perform: if: ${{ github.repository == 'cloudevents/sdk-ruby' }} - env: - ruby_version: "3.4" runs-on: ubuntu-latest steps: - - name: Install Ruby ${{ env.ruby_version }} + - name: Install Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ env.ruby_version }} + ruby-version: "4.0" - name: Checkout repo - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Toys run: "gem install --no-document toys" - name: Perform release diff --git a/.github/workflows/release-request.yml b/.github/workflows/release-request.yml index 22a71f6..29a19e3 100644 --- a/.github/workflows/release-request.yml +++ b/.github/workflows/release-request.yml @@ -15,16 +15,14 @@ permissions: jobs: release-request: if: ${{ github.repository == 'cloudevents/sdk-ruby' }} - env: - ruby_version: "3.4" runs-on: ubuntu-latest steps: - - name: Install Ruby ${{ env.ruby_version }} + - name: Install Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ env.ruby_version }} + ruby-version: "4.0" - name: Checkout repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Install Toys run: "gem install --no-document toys" - name: Open release pull request diff --git a/.github/workflows/release-retry.yml b/.github/workflows/release-retry.yml index cd315b6..dd87e68 100644 --- a/.github/workflows/release-retry.yml +++ b/.github/workflows/release-retry.yml @@ -19,16 +19,14 @@ permissions: jobs: release-retry: if: ${{ github.repository == 'cloudevents/sdk-ruby' }} - env: - ruby_version: "3.4" runs-on: ubuntu-latest steps: - - name: Install Ruby ${{ env.ruby_version }} + - name: Install Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ env.ruby_version }} + ruby-version: "4.0" - name: Checkout repo - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Toys run: "gem install --no-document toys" - name: Retry release diff --git a/.rubocop.yml b/.rubocop.yml index b791250..1ce0e67 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -261,6 +261,8 @@ Style/MethodCallWithArgsParentheses: Enabled: true Style/MinMaxComparison: Enabled: true +Style/ModuleMemberExistenceCheck: + Enabled: true Style/MultilineInPatternThen: Enabled: true Style/NegatedIfElseCondition: diff --git a/.toys/.toys.rb b/.toys/.toys.rb index 4ed1d91..31ea983 100644 --- a/.toys/.toys.rb +++ b/.toys/.toys.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -toys_version! ">= 0.17" +toys_version! ">= 0.19" expand :clean, paths: :gitignore @@ -19,4 +19,4 @@ expand :gem_build, name: "install", install_gem: true -load_gem "toys-release", version: "~> 0.2", as: "release" +load_gem "toys-release", version: "~> 0.4", as: "release" diff --git a/.toys/ci.rb b/.toys/ci.rb index b94a82c..248dc3c 100644 --- a/.toys/ci.rb +++ b/.toys/ci.rb @@ -9,7 +9,7 @@ expand("toys-ci") do |toys_ci| toys_ci.only_flag = true toys_ci.fail_fast_flag = true - toys_ci.job("Bundle update", flag: :bundle, exec: ["bundle", "update"]) + toys_ci.job("Bundle update", flag: :bundle, exec: ["bundle", "update", "--all"]) toys_ci.job("Rubocop", flag: :rubocop, tool: ["rubocop"]) toys_ci.job("Tests", flag: :test, tool: ["test"]) toys_ci.job("Cucumber", flag: :cucumber, tool: ["cucumber"]) diff --git a/Gemfile b/Gemfile index a1f3401..08b2bab 100644 --- a/Gemfile +++ b/Gemfile @@ -4,13 +4,17 @@ source "https://rubygems.org" gemspec gem "cucumber", "~> 9.2" -gem "logger", "~> 1.4" -gem "minitest", "~> 5.25" +gem "minitest", ">= 5.26", "< 7" gem "minitest-focus", "~> 1.4" gem "minitest-rg", "~> 5.3" gem "rack", "~> 3.2" gem "redcarpet", "~> 3.6" unless ::RUBY_PLATFORM == "java" -gem "rubocop", "~> 1.81" -gem "toys-core", "~> 0.17" +gem "rubocop", "~> 1.82" +gem "toys-core", "~> 0.19" gem "webrick", "~> 1.9" -gem "yard", "~> 0.9.37" +# win32ole is required transitively by cucumber via sys-uname, and not declared +# as a dependency as of sys-uname 1.4.1. But it is no longer a default gem as +# of Ruby 4.0, and so must be included explicitly in the Gemfile for now. This +# can be removed once sys-uname gets fixed. +gem "win32ole", "~> 1.9" if ::RbConfig::CONFIG["host_os"] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/ +gem "yard", "~> 0.9.38"