.github/workflows/test.yml

Summary

Maintainability
Test Coverage
name: Test

on: [push, pull_request]

permissions:  # added using https://github.com/step-security/secure-workflows
  contents: read

jobs:
  ruby-versions:
    uses: ruby/actions/.github/workflows/ruby_versions.yml@master

  test:
    needs: ruby-versions
    strategy:
      fail-fast: false
      matrix:
        ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
        os: [ubuntu-latest, macos-latest, windows-latest]
        exclude:
          - os: windows-latest
            ruby: truffleruby
          - os: windows-latest
            ruby: truffleruby-head
          - os: windows-latest
            ruby: jruby
          - os: windows-latest
            ruby: jruby-head
    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@v4 # v3.3.0
    # libyaml-dev is needed for psych, see https://github.com/ruby/setup-ruby/issues/409
    - if: ${{ matrix.os == 'ubuntu-latest' }}
      run: sudo apt install libyaml-dev
    - name: Set up Ruby
      uses: ruby/setup-ruby@master
      with:
        ruby-version: ${{ matrix.ruby }}
        bundler-cache: true # 'bundle install' and cache
    # Avoid issues on these platforms
    - if: ${{ matrix.ruby == '2.6' }}
      run: gem update --system
    - name: Run test
      run: bundle exec rake
      env:
        RUBYOPT: --enable-frozen_string_literal
    - if: ${{ matrix.ruby == 'head' && startsWith(matrix.os, 'ubuntu') }}
      run: bundle exec rake rdoc
    - if: ${{ matrix.ruby == 'head' && startsWith(matrix.os, 'ubuntu') }}
      run: bundle exec rake rubocop