# this file is managed by dry-rb/devtools project

name: ci

on:
  push:
    paths:
      - .github/workflows/ci.yml
      - lib/**
      - spec/**
      - Gemfile
      - "*.gemspec"

jobs:
  tests-mri:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        ruby: ["2.6.x", "2.5.x", "2.4.x"]
        include:
          - ruby: "2.6.x"
            coverage: "true"
    steps:
      - uses: actions/checkout@v1
      - name: Set up Ruby
        uses: actions/setup-ruby@v1
        with:
          ruby-version: ${{matrix.ruby}}
      - name: Download test reporter
        if: "matrix.coverage == 'true'"
        run: |
          mkdir -p tmp/
          curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./tmp/cc-test-reporter
          chmod +x ./tmp/cc-test-reporter
          ./tmp/cc-test-reporter before-build
      - name: Bundle install
        run: |
          gem install bundler
          bundle install --jobs 4 --retry 3 --without tools docs benchmarks
      - name: Run all tests
        env:
          COVERAGE: ${{matrix.coverage}}
        run: bundle exec rake
      - name: Send coverage results
        if: "matrix.coverage == 'true'"
        env:
          CC_TEST_REPORTER_ID: ${{secrets.CC_TEST_REPORTER_ID}}
          GIT_COMMIT_SHA: ${{github.sha}}
          GIT_BRANCH: ${{github.ref}}
          GIT_COMMITTED_AT: ${{github.event.head_commit.timestamp}}
        run: |
          GIT_BRANCH=`ruby -e "puts ENV['GITHUB_REF'].split('/', 3).last"` \
          GIT_COMMITTED_AT=`ruby -r time -e "puts Time.iso8601(ENV['GIT_COMMITTED_AT']).to_i"` \
          ./tmp/cc-test-reporter after-build

  tests-others:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        image: ["jruby:9.2.9", "ruby:2.7"]
    container:
      image: ${{matrix.image}}
    steps:
      - uses: actions/checkout@v1
      - name: Install git
        run: |
          apt-get update
          apt-get install -y --no-install-recommends git
      - name: Bundle install
        run: |
          gem install bundler
          bundle install --jobs 4 --retry 3 --without tools docs benchmarks
      - name: Run all tests
        run: bundle exec rake