mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-23 21:11:05 -05:00
* Omit default_app_config under Django 3.2 and later to avoid DeprecationWarning * Also adds testing on Python 3.9, 3.10-alpha * Also updates test matrix to include all supported Python versions (some older Django versions expanded Python support in patch releases)
117 lines
5.7 KiB
YAML
117 lines
5.7 KiB
YAML
name: test
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
schedule:
|
|
# Weekly build (on branch main) every Thursday at 12:00 UTC.
|
|
# (Used to monitor compatibility with ESP APIs and other dependencies.)
|
|
- cron: '0 12 * * 4'
|
|
|
|
|
|
jobs:
|
|
test:
|
|
name: ${{ matrix.config.tox }} ${{ matrix.config.options }}
|
|
runs-on: ubuntu-18.04
|
|
timeout-minutes: 15
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- { tox: "lint,docs", python: "3.8" }
|
|
|
|
# Anymail supports the same Python versions as Django, plus PyPy.
|
|
# https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django
|
|
|
|
# Live API integration tests are only run on a few, representative Python/Django version
|
|
# combinations, to avoid rapidly consuming the testing accounts' entire send allotments.
|
|
|
|
# Django 2.0: Python 3.5+
|
|
- { tox: django20-py35-all, python: "3.5" }
|
|
- { tox: django20-py36-all, python: "3.6" }
|
|
- { tox: django20-pypy3-all, python: "pypy3" }
|
|
# Django 2.1: Python 3.5, 3.6, or 3.7
|
|
- { tox: django21-py35-all, python: "3.5" }
|
|
- { tox: django21-py36-all, python: "3.6" }
|
|
- { tox: django21-py37-all, python: "3.7" }
|
|
- { tox: django21-pypy3-all, python: pypy3 }
|
|
# Django 2.2: Python 3.5, 3.6, 3.7, 3.8 (added in 2.2.8), 3.9 (added in 2.2.17)
|
|
- { tox: django22-py35-all, python: "3.5" }
|
|
- { tox: django22-py36-all, python: "3.6" }
|
|
- { tox: django22-py37-all, python: "3.7" }
|
|
- { tox: django22-py38-all, python: "3.8" }
|
|
- { tox: django22-py39-all, python: "3.9" }
|
|
- { tox: django22-pypy3-all, python: "pypy3" }
|
|
# Django 3.0: Python 3.6, 3.7, 3.8, 3.9 (added in 3.0.11)
|
|
- { tox: django30-py36-all, python: "3.6" }
|
|
- { tox: django30-py37-all, python: "3.7" }
|
|
- { tox: django30-py38-all, python: "3.8" }
|
|
- { tox: django30-py39-all, python: "3.9" }
|
|
- { tox: django30-pypy3-all, python: "pypy3" }
|
|
# Django 3.1: Python 3.6, 3.7, 3.8, 3.9 (added in 3.1.3)
|
|
- { tox: django31-py36-all, python: "3.6" }
|
|
- { tox: django31-py37-all, python: "3.7" }
|
|
- { tox: django31-py38-all, python: "3.8", options: run-live-tests }
|
|
- { tox: django31-py39-all, python: "3.9" }
|
|
- { tox: django31-pypy3-all, python: "pypy3" }
|
|
# Django 3.2: Python 3.6, 3.7, 3.8, 3.9
|
|
- { tox: django32-py36-all, python: "3.6" }
|
|
- { tox: django32-py37-all, python: "3.7" }
|
|
- { tox: django32-py38-all, python: "3.8" }
|
|
- { tox: django32-py39-all, python: "3.9" }
|
|
- { tox: django32-pypy3-all, python: "pypy3" }
|
|
# Django 4.0: Python 3.8, 3.9, 3.10
|
|
# Django current development (direct from GitHub source)
|
|
- { tox: djangoDev-py38-all, python: "3.8", options: allow-failures }
|
|
- { tox: djangoDev-py39-all, python: "3.9", options: allow-failures }
|
|
- { tox: djangoDev-py310-all, python: "3.10.0-alpha - 3.10", options: allow-failures }
|
|
# Install without optional extras (don't need to cover entire matrix)
|
|
- { tox: django31-py37-none, python: "3.7" }
|
|
- { tox: django31-py37-amazon_ses, python: "3.7" }
|
|
# Test some specific older package versions
|
|
- { tox: django22-py37-all-old_urllib3, python: "3.7" }
|
|
|
|
steps:
|
|
- name: Get code
|
|
uses: actions/checkout@v2
|
|
- name: Setup Python ${{ matrix.config.python }}
|
|
# Ensure matrix Python version is installed and available for tox
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: ${{ matrix.config.python }}
|
|
- name: Setup default Python
|
|
# Change default Python version back to something consistent
|
|
# for installing/running tox
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.8
|
|
- name: Install tox
|
|
run: |
|
|
set -x
|
|
python --version
|
|
pip install tox
|
|
tox --version
|
|
- name: Test ${{ matrix.config.tox }}
|
|
run: |
|
|
tox --version
|
|
tox -e ${{ matrix.config.tox }}
|
|
continue-on-error: ${{ contains( matrix.config.options, 'allow-failures' ) }}
|
|
env:
|
|
CONTINUOUS_INTEGRATION: true
|
|
TOX_FORCE_IGNORE_OUTCOME: false
|
|
ANYMAIL_RUN_LIVE_TESTS: ${{ contains( matrix.config.options, 'run-live-tests' ) }}
|
|
ANYMAIL_TEST_AMAZON_SES_ACCESS_KEY_ID: ${{ secrets.ANYMAIL_TEST_AMAZON_SES_ACCESS_KEY_ID }}
|
|
ANYMAIL_TEST_AMAZON_SES_REGION_NAME: ${{ secrets.ANYMAIL_TEST_AMAZON_SES_REGION_NAME }}
|
|
ANYMAIL_TEST_AMAZON_SES_SECRET_ACCESS_KEY: ${{ secrets.ANYMAIL_TEST_AMAZON_SES_SECRET_ACCESS_KEY }}
|
|
ANYMAIL_TEST_MAILGUN_API_KEY: ${{ secrets.ANYMAIL_TEST_MAILGUN_API_KEY }}
|
|
ANYMAIL_TEST_MAILGUN_DOMAIN: ${{ secrets.ANYMAIL_TEST_MAILGUN_DOMAIN }}
|
|
ANYMAIL_TEST_MAILJET_API_KEY: ${{ secrets.ANYMAIL_TEST_MAILJET_API_KEY }}
|
|
ANYMAIL_TEST_MAILJET_SECRET_KEY: ${{ secrets.ANYMAIL_TEST_MAILJET_SECRET_KEY }}
|
|
ANYMAIL_TEST_MANDRILL_API_KEY: ${{ secrets.ANYMAIL_TEST_MANDRILL_API_KEY }}
|
|
ANYMAIL_TEST_POSTMARK_SERVER_TOKEN: ${{ secrets.ANYMAIL_TEST_POSTMARK_SERVER_TOKEN }}
|
|
ANYMAIL_TEST_POSTMARK_TEMPLATE_ID: ${{ secrets.ANYMAIL_TEST_POSTMARK_TEMPLATE_ID }}
|
|
ANYMAIL_TEST_SENDGRID_API_KEY: ${{ secrets.ANYMAIL_TEST_SENDGRID_API_KEY }}
|
|
ANYMAIL_TEST_SENDGRID_TEMPLATE_ID: ${{ secrets.ANYMAIL_TEST_SENDGRID_TEMPLATE_ID }}
|
|
ANYMAIL_TEST_SENDINBLUE_API_KEY: ${{ secrets.ANYMAIL_TEST_SENDINBLUE_API_KEY }}
|
|
ANYMAIL_TEST_SPARKPOST_API_KEY: ${{ secrets.ANYMAIL_TEST_SPARKPOST_API_KEY }}
|