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
    with:
      min_version: 2.3
      engine: cruby-jruby
      versions: '["truffleruby"]'

  test:
    needs: ruby-versions
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ]
        ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
        exclude:
          - os: macos-latest
            ruby: 2.3
          - os: macos-latest
            ruby: 2.4
          - os: macos-latest
            ruby: 2.5
          - os: windows-latest
            ruby: 2.3
          - os: windows-latest
            ruby: truffleruby
          - os: windows-latest
            ruby: jruby-head
          - os: windows-latest
            ruby: jruby
    steps:
    - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
    - uses: ruby/setup-ruby@4ff6f3611a42bc75eee1e5138240eb1613f48c8f # v1.266.0
      with:
        ruby-version: ${{ matrix.ruby }}
    - name: Install dependencies
      run: gem install test-unit
    - name: Run test
      run: ruby -Ilib exe/rake
