File: tests.yml

package info (click to toggle)
django-cte 3.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 376 kB
  • sloc: python: 3,460; makefile: 7
file content (93 lines) | stat: -rw-r--r-- 2,869 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
name: django-cte tests
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

jobs:
  configure:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Read Python versions from pyproject.toml
      id: read-python-versions
      # produces output like: python_versions=[ "3.9", "3.10", "3.11", "3.12" ]
      run: >-
        echo "python_versions=$(
        grep -oP '(?<=Language :: Python :: )\d\.\d+' pyproject.toml
        | jq --raw-input .
        | jq --slurp .
        | tr '\n' ' '
        )" >> $GITHUB_OUTPUT
    - name: Read Django versions from pyproject.toml
      id: read-django-versions
      # django_versions=[ "Django~=4.2.0", "Django~=5.1.0", "Django~=5.2.0" ]
      run: >-
        echo "django_versions=$(
        grep -oP '(?<=Framework :: Django :: )\d+\.\d+' pyproject.toml
        | sed -E 's/(.+)/Django~=\1.0/'
        | jq --raw-input .
        | jq --slurp .
        | tr '\n' ' '
        )" >> $GITHUB_OUTPUT
    outputs:
      python_versions: ${{ steps.read-python-versions.outputs.python_versions }}
      django_versions: ${{ steps.read-django-versions.outputs.django_versions }}

  tests:
    needs: [configure]
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python: ${{ fromJSON(needs.configure.outputs.python_versions) }}
        django: ${{ fromJSON(needs.configure.outputs.django_versions) }}
        exclude:
        - {python: '3.9', django: 'Django~=5.1.0'}
        - {python: '3.9', django: 'Django~=5.2.0'}
    env:
      allowed_python_failure: '3.14'
    services:
      postgres:
        image: postgres:latest
        env:
          POSTGRES_DB: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_USER: postgres
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
    - uses: actions/checkout@v4
    - uses: astral-sh/setup-uv@v6
      with:
        version: '>=0.7'
        python-version: ${{ matrix.python }}
    - name: Setup
      run: |
        uv sync --locked --no-install-package=django
        uv pip install "${{ matrix.django }}"
    - name: Run tests on PostgreSQL
      env:
        DB_SETTINGS: >-
          {
            "ENGINE":"django.db.backends.postgresql_psycopg2",
            "NAME":"django_cte",
            "USER":"postgres",
            "PASSWORD":"postgres",
            "HOST":"localhost",
            "PORT":"5432"
          }
      run: .venv/bin/pytest -v
      continue-on-error: ${{ matrix.python == env.allowed_python_failure }}
    - name: Run tests on SQLite
      run: .venv/bin/pytest -v
      continue-on-error: ${{ matrix.python == env.allowed_python_failure }}
    - name: Check style
      run: .venv/bin/ruff check