name: tests on: push: branches: - master pull_request: branches: - master # for code coverage comment permissions: contents: read pull-requests: write env: MONGO_HOST: "127.0.0.1" REDIS_HOST: "127.0.0.1" AWS_ENDPOINT_URL: http://localhost:4566 AWS_REGION: "us-east-1" AWS_ACCESS_KEY_ID: "test" AWS_SECRET_ACCESS_KEY: "test" AWS_DEFAULT_REGION: "us-east-1" jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Lint with ruff run: | pipx install ruff==0.4.10 ruff format . --check && ruff check . - name: Check twine run: | python -m pip install twine poetry rstcheck poetry build rstcheck README.rst twine check dist/* test: runs-on: ubuntu-latest strategy: matrix: python-version: - "3.10" - "3.11" - "3.12" - "3.13" - "3.14" django: - "5.2" - "6.0" - "6.1" exclude: # django 6.0 does not support earlier than 3.12 - python-version: "3.10" django: "6.0" - python-version: "3.11" django: "6.0" # django 6.1 does not support earlier than 3.12 - python-version: "3.10" django: "6.1" - python-version: "3.11" django: "6.1" services: mongodb: image: mongo ports: - 27017:27017 postgres: image: postgres env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - 5432:5432 # needed because the postgres container does not provide a health check options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 redis: image: redis ports: - 6379:6379 options: --entrypoint redis-server aws: image: ministackorg/ministack:1.4.16 env: SERVICES: sqs MINISTACK_HOST: aws ports: - 4566:4566 steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies with Django ${{ matrix.django }} run: | python -m pip install uv==0.12.1 uv sync --extra testing --python ${{ matrix.python-version }} uv pip install "django~=${{ matrix.django }}a1" - name: Create SQS queue run: aws sqs create-queue --queue-name testing - name: Run Tests run: | uv run pytest --cov=./django_q --cov-report=xml --junitxml=pytest.xml --cov-report=term-missing:skip-covered | tee pytest-coverage.txt - name: Coverage comment if: matrix.python-version == '3.13' && matrix.django == '5.2' && github.event_name == 'pull_request' uses: MishaKav/pytest-coverage-comment@v1 with: pytest-coverage-path: ./pytest-coverage.txt junitxml-path: ./pytest.xml report-only-changed-files: true