mirror of
https://github.com/Hopiu/django-notifications.git
synced 2026-03-17 05:40:25 +00:00
105 lines
3.2 KiB
YAML
105 lines
3.2 KiB
YAML
# Based on
|
|
# https://pypi.org/project/tox-gh-actions/
|
|
|
|
---
|
|
name: Test the application.
|
|
|
|
on:
|
|
- push
|
|
- pull_request
|
|
|
|
jobs:
|
|
code-check:
|
|
name: Code checking
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
- name: Install poetry
|
|
run: pipx install poetry
|
|
- name: Set python version for poetry
|
|
run: poetry env use python3.11
|
|
- name: Install dependencies
|
|
run: poetry install -E lint
|
|
- name: Run Isort
|
|
run: poetry run -v -- isort -c notifications/ sample_website/
|
|
- name: Run Black
|
|
run: poetry run -v -- black --check notifications/ sample_website/
|
|
- name: Run Pylint
|
|
run: poetry run -vvv -- pylint --rcfile=pyproject.toml --recursive=y -v notifications/ sample_website/
|
|
- name: Run Bandit
|
|
run: poetry run -v -- bandit -c pyproject.toml -r notifications/ sample_website/
|
|
- name: Run Mypy
|
|
run: poetry run -v -- mypy
|
|
|
|
test:
|
|
name: Testing
|
|
runs-on: ubuntu-latest
|
|
needs: code-check
|
|
strategy:
|
|
max-parallel: 4
|
|
matrix:
|
|
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
|
django-version: ["3.2.0", "4.0.0", "4.1.0", "4.2.0"]
|
|
exclude:
|
|
- python-version: "3.11"
|
|
django-version: ["3.2", "4.0.0"]
|
|
- python-version: "3.12"
|
|
django-version: ["3.2", "4.0.0", "4.1.0"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Install poetry
|
|
run: pipx install poetry
|
|
- name: Set python version for poetry
|
|
run: poetry env use python${{ matrix.python-version }}
|
|
- name: Install Django
|
|
run: poetry add --lock django@~${{ matrix.django-version }}
|
|
- name: Install dependencies
|
|
run: poetry install -E test
|
|
- name: Run tests
|
|
run: poetry run -- pytest
|
|
env:
|
|
COVERAGE_FILE: ".coverage.${{ matrix.python-version }}.${{ matrix.django-version }}"
|
|
- name: Store coverage file
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: coverage-${{ matrix.python-version }}-${{ matrix.django-version }}
|
|
path: .coverage.${{ matrix.python-version }}.${{ matrix.django-version }}
|
|
|
|
|
|
coverage:
|
|
name: Coverage
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
permissions:
|
|
pull-requests: write
|
|
contents: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/download-artifact@v4
|
|
id: download
|
|
with:
|
|
pattern: coverage-*
|
|
merge-multiple: true
|
|
|
|
- name: Coverage comment
|
|
id: coverage_comment
|
|
uses: py-cov-action/python-coverage-comment-action@v3
|
|
with:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
MERGE_COVERAGE_FILES: true
|
|
|
|
- name: Store Pull Request comment to be posted
|
|
uses: actions/upload-artifact@v4
|
|
if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true'
|
|
with:
|
|
name: python-coverage-comment-action
|
|
path: python-coverage-comment-action.txt
|