summaryrefslogtreecommitdiffstats
path: root/.github/workflows/test.yml
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.github/workflows/test.yml131
1 files changed, 131 insertions, 0 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..21e1321
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,131 @@
+name: test
+on:
+ push:
+ branches:
+ - main
+ paths-ignore:
+ - "docs/**"
+ - "*.md"
+ pull_request:
+ branches:
+ - main
+ paths-ignore:
+ - "docs/**"
+ - "*.md"
+ schedule:
+ - cron: "0 8 * * *"
+ workflow_dispatch:
+
+concurrency:
+ group: test-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ pytest:
+ runs-on: ${{ matrix.os }}-latest
+ env:
+ PYTEST_ADDOPTS: "--run-integration --showlocals -vv --durations=10 --reruns 5 --only-rerun subprocess.CalledProcessError"
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - ubuntu
+ - macos
+ - windows
+ py:
+ - "pypy-3.7"
+ - "pypy-3.8"
+ - "pypy-3.9"
+ - "3.11"
+ - "3.10"
+ - "3.9"
+ - "3.8"
+ - "3.7"
+ - "3.6"
+ tox-target:
+ - "tox"
+ - "min"
+
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Setup python for test ${{ matrix.py }}
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.py }}
+
+ - name: Pick environment to run
+ run: |
+ import platform
+ import os
+ import sys
+
+ if platform.python_implementation() == "PyPy":
+ base = f"pypy{sys.version_info.major}{sys.version_info.minor}"
+ else:
+ base = f"py{sys.version_info.major}{sys.version_info.minor}"
+ env = f"BASE={base}\n"
+ print(f"Picked:\n{env}for {sys.version}")
+ with open(os.environ["GITHUB_ENV"], "a", encoding="utf-8") as file:
+ file.write(env)
+ shell: python
+
+ - name: Setup python for tox
+ uses: actions/setup-python@v4
+ with:
+ python-version: 3.9
+
+ - name: Install tox
+ run: python -m pip install tox
+
+ - name: Run test suite via tox
+ if: matrix.tox-target == 'tox'
+ run: |
+ tox -vv --notest -e ${{env.BASE}}
+ tox -e ${{env.BASE}} --skip-pkg-install
+
+ - name: Run minimum version test
+ if: matrix.tox-target == 'min'
+ run: tox -e ${{env.BASE}}-${{ matrix.tox-target }}
+
+ - name: Run path test
+ if: matrix.tox-target == 'tox' && matrix.py == '3.10'
+ run: tox -e path
+
+ - name: Combine coverage files
+ if: always()
+ run: tox -e coverage
+
+ - uses: codecov/codecov-action@v3
+ if: always()
+ env:
+ PYTHON: ${{ matrix.python }}
+ with:
+ file: ./.tox/coverage.xml
+ flags: tests
+ env_vars: PYTHON
+ name: ${{ matrix.py }} - ${{ matrix.os }}
+
+ type:
+ runs-on: ubuntu-latest
+ env:
+ PY_COLORS: 1
+ TOX_PARALLEL_NO_SPINNER: 1
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Setup Python 3.9
+ uses: actions/setup-python@v4
+ with:
+ python-version: 3.9
+
+ - name: Install tox
+ run: python -m pip install tox
+
+ - name: Setup run environment
+ run: tox -vv --notest -e type
+
+ - name: Run check for type
+ run: tox -e type --skip-pkg-install