name: Test on: push: paths-ignore: - ".github/workflows/docs.yml" - "docs/**" pull_request: paths-ignore: - ".github/workflows/docs.yml" - "docs/**" workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: strategy: fail-fast: false matrix: os: [ "macos-latest", "ubuntu-latest", ] python-version: [ "pypy3.10", "pypy3.9", "3.12-dev", "3.11", "3.10", "3.9", "3.8", ] include: - python-version: "3.9" PYTHONOPTIMIZE: 1 REVERSE: "--reverse" - python-version: "3.8" PYTHONOPTIMIZE: 2 runs-on: ${{ matrix.os }} name: ${{ matrix.os }} Python ${{ matrix.python-version }} steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} cache: pip cache-dependency-path: ".ci/*.sh" - name: Build system information run: python3 .github/workflows/system-info.py - name: Install Linux dependencies if: startsWith(matrix.os, 'ubuntu') run: | .ci/install.sh env: GHA_PYTHON_VERSION: ${{ matrix.python-version }} - name: Install macOS dependencies if: startsWith(matrix.os, 'macOS') run: | .github/workflows/macos-install.sh env: GHA_PYTHON_VERSION: ${{ matrix.python-version }} - name: Build run: | .ci/build.sh - name: Test run: | if [ $REVERSE ]; then python3 -m pip install pytest-reverse fi if [ "${{ matrix.os }}" = "ubuntu-latest" ]; then xvfb-run -s '-screen 0 1024x768x24' sway& export WAYLAND_DISPLAY=wayland-1 .ci/test.sh else .ci/test.sh fi env: PYTHONOPTIMIZE: ${{ matrix.PYTHONOPTIMIZE }} REVERSE: ${{ matrix.REVERSE }} - name: Prepare to upload errors if: failure() run: | mkdir -p Tests/errors - name: Upload errors uses: actions/upload-artifact@v3 if: failure() with: name: errors path: Tests/errors - name: After success run: | .ci/after_success.sh - name: Upload coverage uses: codecov/codecov-action@v3 with: flags: ${{ matrix.os == 'macos-latest' && 'GHA_macOS' || 'GHA_Ubuntu' }} name: ${{ matrix.os }} Python ${{ matrix.python-version }} gcov: true success: permissions: contents: none needs: build runs-on: ubuntu-latest name: Test Successful steps: - name: Success run: echo Test Successful