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.7" toxenv: py37,smoke - version: "3.8" toxenv: py38,smoke - version: "3.9" toxenv: py39,smoke - version: "3.10" toxenv: py310,smoke - version: "3.11" toxenv: py311,smoke - version: '3.12.0-alpha - 3.12' # SemVer's version range syntax toxenv: py312,smoke include: - os: macos-latest python: version: "3.11" toxenv: py310,smoke - os: windows-latest python: version: "3.11" toxenv: py310,smoke steps: - uses: actions/checkout@v3.5.0 - name: Set up Python ${{ matrix.python.version }} uses: actions/setup-python@v4.5.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: runs-on: ubuntu-20.04 strategy: matrix: toxenv: [api_func_v4, cli_func_v4] steps: - uses: actions/checkout@v3.5.0 - name: Set up Python uses: actions/setup-python@v4.5.0 with: python-version: "3.11" - 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@v3.1.1 with: files: ./coverage.xml flags: ${{ matrix.toxenv }} fail_ci_if_error: false coverage: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3.5.0 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4.5.0 with: python-version: "3.11" - 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@v3.1.1 with: files: ./coverage.xml flags: unit fail_ci_if_error: false dist: runs-on: ubuntu-latest name: Python wheel steps: - uses: actions/checkout@v1.2.0 - uses: actions/setup-python@v2.3.3 with: python-version: "3.11" - name: Install dependencies run: | pip install -r requirements-test.txt - name: Build package run: python -m build -o dist/ - uses: actions/upload-artifact@v2.3.1 with: name: dist path: dist test: runs-on: ubuntu-latest needs: [dist] steps: - uses: actions/checkout@v3.5.0 - name: Set up Python uses: actions/setup-python@v4.5.0 with: python-version: '3.11' - uses: actions/download-artifact@v3.0.2 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