name: Test # If a pull-request is pushed then cancel all previously running jobs related # to that pull-request concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true on: push: branches: - main pull_request: branches: - main - master env: PY_COLORS: 1 jobs: unit: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest] python: - version: "3.10" toxenv: py310,smoke - version: "3.11" toxenv: py311,smoke - version: "3.12" toxenv: py312,smoke - version: "3.13" toxenv: py313,smoke - version: "3.14" toxenv: py314,smoke include: - os: macos-latest python: version: "3.14" toxenv: py314,smoke - os: windows-latest python: version: "3.14" toxenv: py314,smoke steps: - uses: actions/checkout@v6.0.2 - name: Set up Python ${{ matrix.python.version }} uses: actions/setup-python@v6.2.0 with: python-version: ${{ matrix.python.version }} - name: Install dependencies run: pip install tox - name: Run tests env: TOXENV: ${{ matrix.python.toxenv }} run: tox --skip-missing-interpreters false functional: timeout-minutes: 30 runs-on: ubuntu-24.04 strategy: matrix: toxenv: [api_func_v4, cli_func_v4] steps: - uses: actions/checkout@v6.0.2 - name: Set up Python uses: actions/setup-python@v6.2.0 with: python-version: "3.14" - name: Install dependencies run: pip install tox - name: Run tests env: TOXENV: ${{ matrix.toxenv }} run: tox -- --override-ini='log_cli=True' - name: Upload codecov coverage uses: codecov/codecov-action@v6.0.0 with: files: ./coverage.xml flags: ${{ matrix.toxenv }} fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} coverage: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v6.0.2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6.2.0 with: python-version: "3.14" - name: Install dependencies run: pip install tox - name: Run tests env: PY_COLORS: 1 TOXENV: cover run: tox - name: Upload codecov coverage uses: codecov/codecov-action@v6.0.0 with: files: ./coverage.xml flags: unit fail_ci_if_error: false token: ${{ secrets.CODECOV_TOKEN }} dist: runs-on: ubuntu-latest name: Python wheel steps: - uses: actions/checkout@v6.0.2 - uses: actions/setup-python@v6.2.0 with: python-version: "3.14" - name: Install dependencies run: | pip install -r requirements-test.txt - name: Build package run: python -m build -o dist/ - uses: actions/upload-artifact@v7.0.0 with: name: dist path: dist test: runs-on: ubuntu-latest needs: [dist] steps: - uses: actions/checkout@v6.0.2 - name: Set up Python uses: actions/setup-python@v6.2.0 with: python-version: '3.14' - uses: actions/download-artifact@v8.0.1 with: name: dist path: dist - name: install dist/*.whl and requirements run: pip install dist/*.whl -r requirements-test.txt tox - name: Run tests run: tox -e install