diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 40c0376..c9b9a2b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,103 +1,34 @@ -name: test +name: Test -on: [ push, pull_request ] +on: + push: + branches: + - main + pull_request: concurrency: group: test-${{ github.head_ref }} cancel-in-progress: true -jobs: - ruff: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: chartboost/ruff-action@v1 - tests_matrix: +jobs: + build: runs-on: ubuntu-latest - needs: [ ruff ] strategy: matrix: - python-version: [3.8, 3.9, "3.10", 3.11, 3.12, 3.13] - django-version: [4.2, 5.0, 5.1, "main"] - exclude: - # Django 5.0 - - python-version: 3.8 - django-version: 5.0 - - python-version: 3.9 - django-version: 5.0 - - # Django 5.1 - - python-version: 3.8 - django-version: 5.1 - - python-version: 3.9 - django-version: 5.1 - - # Django main - - python-version: 3.8 - django-version: "main" - - python-version: 3.9 - django-version: "main" + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - - name: Update repositories - run: sudo apt-get update + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - cache: 'pip' - cache-dependency-path: requirements-test.txt - - run: python -m pip install -r requirements-test.txt - - run: python -m pip install -U Django==${{ matrix.django-version }} - if: matrix.django-version != 'main' - - run: python -m pip install -U https://github.com/django/django/archive/master.tar.gz - if: matrix.django-version == 'main' - - run: python -m pip install -e . - - run: coverage run manage.py test - - run: python -m pip install -U coveralls - - name: Upload coveralls (parallel) - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COVERALLS_PARALLEL: true - run: coveralls --service=github + allow-prereleases: true - docs: - runs-on: ubuntu-latest - needs: [ tests_matrix ] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.11" - cache: 'pip' - cache-dependency-path: docs/requirements.txt - - name: Build documentation - run: | - python -m pip install -r docs/requirements.txt - make docs - - build: - runs-on: ubuntu-latest - needs: [ tests_matrix ] - steps: - - uses: actions/checkout@v4 - name: Install uv - uses: astral-sh/setup-uv@v3 - - name: Build - run: make build + uses: astral-sh/setup-uv@v4 - tests: - if: always() - runs-on: ubuntu-latest - needs: [ tests_matrix, ruff, docs, build ] - steps: - - name: Check tests matrix status - if: needs.tests_matrix.result != 'success' - run: exit 1 - - name: Finish parallel build - uses: coverallsapp/github-action@v2 - with: - parallel-finished: true - github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Test with tox + run: uvx --with tox-uv --with tox-gh-actions tox diff --git a/justfile b/justfile index 047f44c..8e82382 100644 --- a/justfile +++ b/justfile @@ -1,8 +1,11 @@ -# use with https://github.com/casey/just +set export := true +set dotenv-load := true + +VENV_DIRNAME := ".venv" # default recipe default: - just --list + just --list [private] @check_uv: @@ -13,12 +16,17 @@ default: # Set up development environment @bootstrap: check_uv - if test ! -e .venv; then \ + if test ! -e $VENV_DIRNAME; then \ uv python install; \ fi - uv sync + just update + +# Install and/or update all dependencies defined in pyproject.toml +@update: check_uv + uv sync --all-extras --upgrade # Format @format: bootstrap - ruff format . - ruff check . --fix + ruff format . + ruff check . --fix + diff --git a/tox.ini b/tox.ini index 65bbbf6..2917b80 100644 --- a/tox.ini +++ b/tox.ini @@ -28,15 +28,14 @@ deps = 5.0: Django==5.0.* 5.1: Django==5.1.* main: https://github.com/django/django/archive/main.tar.gz - -r{toxinidir}/requirements-test.txt [testenv:ruff] -basepython = python3.11 +basepython = python3.12 deps = ruff commands = ruff check . [testenv:docs] -basepython = python3.11 +basepython = python3.12 allowlist_externals = make setenv = PYTHONWARNINGS=default