name: Python App Quality and Testing on: [push] jobs: quality: runs-on: ubuntu-latest strategy: matrix: python-version: [3.11] steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: # https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#caching-packages python-version: ${{ matrix.python-version }} cache: "pip" cache-dependency-path: "requirements/dev.txt" - name: Install dev dependencies run: | python -m pip install --upgrade pip python -m pip install -r requirements/dev.txt - name: Lint with ruff run: | python -m ruff check --verbose --format=github . - name: Lint with mypy run: | python -m mypy --show-error-codes --pretty --show-column-numbers --show-error-context . - name: Lint with black run: | python -m black --check --verbose . - name: Lint with pyproject-fmt run: | python -m pyproject_fmt --check --indent=4 . test: needs: [quality] runs-on: ubuntu-latest strategy: matrix: python-version: [3.11] steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: # https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#caching-packages python-version: ${{ matrix.python-version }} cache: "pip" cache-dependency-path: "requirements/test.txt" - name: Install test dependencies run: | python -m pip install --upgrade pip python -m pip install -r requirements/test.txt - name: Test with pytest run: | python -m pytest -v -s --failed-first --cov=app --cov-report=xml --cov-branch - name: Generate Coverage Report run: | python -m coverage report -m - name: Upload coverage to Codecov env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} if: ${{ env.CODECOV_TOKEN }} uses: codecov/codecov-action@v1 with: token: ${{ secrets.CODECOV_TOKEN }} file: coverage.xml name: python ${{ matrix.python-version }}