name: check on: push: tags-ignore: ["**"] pull_request: schedule: - cron: "0 8 * * *" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: name: test ${{ matrix.py }} - ${{ matrix.os }} if: github.event_name != 'schedule' || github.repository_owner == 'pypa' runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: py: - "3.12.0-alpha.7" - "3.11" - "3.10" - "3.9" - "3.8" - "3.7" - pypy-3.9 - pypy-3.8 - pypy-3.7 os: - ubuntu-22.04 - macos-12 - windows-2022 include: - { os: macos-12, py: "brew@3.9" } - { os: macos-12, py: "brew@3.8" } steps: - uses: taiki-e/install-action@cargo-binstall - name: Install OS dependencies run: | set -x for i in 1 2 3; do echo "try $i" && \ ${{ runner.os == 'Linux' && 'sudo apt-get update -y && sudo apt-get install snapd fish csh -y' || true }} && \ ${{ runner.os == 'Linux' && 'cargo binstall -y nu' || true }} && \ ${{ runner.os == 'macOS' && 'brew install fish tcsh nushell' || true }} && \ ${{ runner.os == 'Windows' && 'choco install nushell' || true }} && \ exit 0 || true; sleep 1 done exit 1 shell: bash - name: Setup python for tox uses: actions/setup-python@v4 with: python-version: "3.11" - name: Install tox run: python -m pip install tox pip -U - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Use local virtualenv for tox run: python -m pip install . - name: Setup brew python for test ${{ matrix.py }} if: startsWith(matrix.py,'brew@') run: | set -e PY=$(echo '${{ matrix.py }}' | cut -c 6-) brew upgrade python@$PY || brew install python@$PY echo "/usr/local/opt/python@$PY/libexec/bin" >>"${GITHUB_PATH}" shell: bash - name: Setup python for test ${{ matrix.py }} if: "!( startsWith(matrix.py,'brew@') || endsWith(matrix.py, '-dev') )" uses: actions/setup-python@v4 with: python-version: ${{ matrix.py }} - name: Pick environment to run run: | import os; import platform; import sys; from pathlib import Path env = f'TOXENV=py{"" if platform.python_implementation() == "CPython" else "py"}3{sys.version_info.minor}' print(f"Picked: {env} for {sys.version} based of {sys.executable}") with Path(os.environ["GITHUB_ENV"]).open("ta") as file_handler: file_handler.write(env) shell: python - name: Setup test suite run: tox -vv --notest - name: Run test suite run: tox --skip-pkg-install env: PYTEST_ADDOPTS: "-vv --durations=20" CI_RUN: "yes" DIFF_AGAINST: HEAD check: name: ${{ matrix.tox_env }} - ${{ matrix.os }} if: github.event_name != 'schedule' || github.repository_owner == 'pypa' runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-22.04 - windows-2022 tox_env: - dev - docs - readme - upgrade - zipapp exclude: - { os: windows-2022, tox_env: readme } - { os: windows-2022, tox_env: docs } steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Setup Python "3.11" uses: actions/setup-python@v4 with: python-version: "3.11" - name: Install tox run: python -m pip install tox - name: Run check for ${{ matrix.tox_env }} run: python -m tox -e ${{ matrix.tox_env }} env: UPGRADE_ADVISORY: "yes"