name: Test on: [push, pull_request] jobs: build: strategy: fail-fast: false matrix: os: [ "ubuntu-latest", "macOS-latest", ] python-version: [ "pypy3", "3.8", "3.7", "3.6", "3.5", ] include: - python-version: "3.5" env: PYTHONOPTIMIZE=2 - python-version: "3.6" env: PYTHONOPTIMIZE=1 # Include new variables for Codecov - os: ubuntu-latest codecov-flag: GHA_Ubuntu - os: macOS-latest codecov-flag: GHA_macOS runs-on: ${{ matrix.os }} name: ${{ matrix.os }} Python ${{ matrix.python-version }} steps: - uses: actions/checkout@v1 - name: Ubuntu cache uses: actions/cache@v1 if: startsWith(matrix.os, 'ubuntu') with: path: ~/.cache/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/.ci/*.sh') }} restore-keys: | ${{ matrix.os }}-${{ matrix.python-version }}- - name: macOS cache uses: actions/cache@v1 if: startsWith(matrix.os, 'macOS') with: path: ~/Library/Caches/pip key: ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/.ci/*.sh') }} restore-keys: | ${{ matrix.os }}-${{ matrix.python-version }}- - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Build system information run: python .github/workflows/system-info.py - name: Install Linux dependencies if: startsWith(matrix.os, 'ubuntu') run: | .ci/install.sh - name: Install macOS dependencies if: startsWith(matrix.os, 'macOS') run: | .github/workflows/macos-install.sh - name: Build run: | .ci/build.sh - name: Test run: | .ci/test.sh - name: Prepare to upload errors if: failure() run: | mkdir -p Tests/errors shell: pwsh - name: Upload errors uses: actions/upload-artifact@v1 if: failure() with: name: errors path: Tests/errors - name: After success if: success() run: | .ci/after_success.sh - name: Upload coverage if: success() run: bash <(curl -s https://codecov.io/bash) -F ${{ matrix.codecov-flag }} env: CODECOV_NAME: ${{ matrix.os }} Python ${{ matrix.python-version }}