name: Run tests on: # run on push in master or rel_* branches excluding changes are only on doc or example folders push: branches: - master - "rel_*" # branches used to test the workflow - "workflow_test_*" paths-ignore: - "doc/**" - "examples/**" env: # global env to all steps TOX_WORKERS: -n2 jobs: run-test: name: ${{ matrix.python-version }}-${{ matrix.build-type }}-${{ matrix.architecture }}-${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: # run this job using this matrix, excluding some combinations below. matrix: os: - "ubuntu-latest" - "windows-latest" - "macos-latest" python-version: - "2.7" - "3.6" - "3.7" - "3.8" - "3.9" - "3.10.0-beta - 3.10" - "pypy3" build-type: - "cext" - "nocext" architecture: - x64 - x86 include: # autocommit tests fail on the ci for some reason - python-version: "pypy3" pytest-args: "-k 'not test_autocommit_on and not test_turn_autocommit_off_via_default_iso_level and not test_autocommit_isolation_level'" # add aiosqlite on linux - os: "ubuntu-latest" pytest-args: "--dbdriver pysqlite --dbdriver aiosqlite" exclude: # c-extensions fail to build on windows for python 2.7 - os: "windows-latest" python-version: "2.7" build-type: "cext" # linux and osx do not have x86 python - os: "ubuntu-latest" architecture: x86 - os: "macos-latest" architecture: x86 # pypy does not have cext - python-version: "pypy3" build-type: "cext" # pypy on windows has an ancient sqlite version (3.6) - os: "windows-latest" python-version: "pypy3" fail-fast: false # steps to run in each job. Some are github actions, others run shell commands steps: - name: Checkout repo uses: actions/checkout@v2 - name: Set up python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install --upgrade tox setuptools pip list - name: Run tests run: tox -e github-${{ matrix.build-type }} -- -q --nomemory --notimingintensive ${{ matrix.pytest-args }} run-test-arm64: name: ${{ matrix.python-version }}-${{ matrix.build-type }}-arm64-ubuntu-latest runs-on: ubuntu-latest strategy: matrix: python-version: - cp36-cp36m - cp37-cp37m - cp38-cp38 - cp39-cp39 build-type: - "cext" - "nocext" fail-fast: false steps: - name: Checkout repo uses: actions/checkout@v2 - name: Set up emulation run: | docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - name: Run tests uses: docker://quay.io/pypa/manylinux2014_aarch64 with: args: | bash -c " export PATH=/opt/python/${{ matrix.python-version }}/bin:$PATH && python --version && python -m pip install --upgrade pip && pip install --upgrade tox setuptools && pip list && tox -e github-${{ matrix.build-type }} -- -q --nomemory --notimingintensive ${{ matrix.pytest-args }} " run-mypy: name: mypy-${{ matrix.python-version }} runs-on: ${{ matrix.os }} strategy: # run this job using this matrix, excluding some combinations below. matrix: os: - "ubuntu-latest" python-version: - "3.6" - "3.7" - "3.8" - "3.9" - "3.10.0-beta - 3.10" fail-fast: false # steps to run in each job. Some are github actions, others run shell commands steps: - name: Checkout repo uses: actions/checkout@v2 - name: Set up python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install --upgrade tox setuptools pip list - name: Run tests run: tox -e mypy ${{ matrix.pytest-args }}