name: Build

on: [push, pull_request]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        ruby: ['3.0', 3.1, 3.2, 3.3, 3.4]

    steps:
    - name: Checkout code
      uses: actions/checkout@v5

    - name: Set up Ruby ${{ matrix.ruby }}
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: ${{ matrix.ruby }}

    - name: Install GEMs
      run: |
        gem install bundler
        bundle config force_ruby_platform true
        bundle config path vendor/bundle
        bundle install --jobs 4 --retry 3

    - name: rubocop
      run: |
        bundle exec rubocop

    # Runs Specs which are not tagged as slow first to speed up the process in case of failure in those
    # Then will run the full specs suite (and generate the final coverage report)
    - name: rspec
      run: |
        bundle exec rspec --tag ~slow
        bundle exec rspec

    - name: Coveralls
      uses: coverallsapp/github-action@master
      continue-on-error: true
      with:
        github-token: ${{ secrets.GITHUB_TOKEN }}
