tox: add check-migrations environment

This commit is contained in:
Benjamin Dauvergne 2022-03-17 18:52:38 +01:00
parent af7e404f84
commit 4c28f24b68
2 changed files with 41 additions and 0 deletions

27
check-migrations.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
set -e
# https://stackoverflow.com/questions/49778988/makemigrations-in-dev-machine-without-database-instance
CHECK_MIGRATIONS_SETTINGS=`mktemp`
trap "rm -f ${CHECK_MIGRATIONS_SETTINGS}" EXIT
cat <<EOF >${CHECK_MIGRATIONS_SETTINGS}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.dummy',
}
}
EOF
APPS=$(env DJANGO_SETTINGS_MODULE=petale.settings python -c 'from django.conf import settings; print(" ".join(p for p in (p.split(".")[-1] for p in settings.INSTALLED_APPS if not p.startswith("django.")) if p not in ["admin", "auth", "contenttypes"]))')
TEMPFILE=`mktemp`
trap "rm -f ${TEMPFILE} ${CHECK_MIGRATIONS_SETTINGS}" EXIT
PETALE_SETTINGS_FILE=${CHECK_MIGRATIONS_SETTINGS} ./manage.py makemigrations --dry-run --noinput ${APPS} >${TEMPFILE} 2>&1 || true
if ! grep 'No changes detected' -q ${TEMPFILE}; then
echo '!!! Missing migration detected !!!'
cat ${TEMPFILE}
exit 1
else
exit 0
fi

14
tox.ini
View File

@ -3,11 +3,13 @@ toxworkdir = {env:TMPDIR:/tmp}/tox-{env:USER}/petale/
envlist =
py3-dj22-drf39
code-style
check-migrations
[tox:jenkins]
envlist =
pylint
code-style
check-migrations
py3-dj22-drf39
[testenv]
@ -75,6 +77,18 @@ deps =
commands =
pre-commit run --all-files --show-diff-on-failure
[testenv:check-migrations]
basepython = python3
usedevelop = True
setenv =
DJANGO_SETTINGS_MODULE=petale.settings
PETALE_SETTINGS_FILE=tests/settings.py
SETUPTOOLS_USE_DISTUTILS=stdlib
deps =
psycopg2-binary
commands =
./check-migrations.sh
[pytest]
junit_family=xunit2
filterwarnings =