name: Test on: [push, pull_request] jobs: build: strategy: fail-fast: false matrix: os: [ "ubuntu-latest", "macOS-latest", ] python-version: [ "pypy3", "3.9-dev", "3.8", "3.7", "3.6", ] include: - python-version: "3.6" env: PYTHONOPTIMIZE=1 - python-version: "3.7" env: PYTHONOPTIMIZE=2 # 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@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Get pip cache dir id: pip-cache run: | echo "::set-output name=dir::$(pip cache dir)" - name: pip cache uses: actions/cache@v2 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/.ci/*.sh') }} restore-keys: | ${{ matrix.os }}-${{ 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@v2 if: failure() with: name: errors path: Tests/errors - name: Docs if: startsWith(matrix.os, 'ubuntu') && matrix.python-version == 3.8 run: | pip install sphinx-removed-in sphinx-rtd-theme make doccheck - name: After success run: | .ci/after_success.sh - name: Upload coverage run: bash <(curl -s https://codecov.io/bash) -F ${{ matrix.codecov-flag }} env: CODECOV_NAME: ${{ matrix.os }} Python ${{ matrix.python-version }}