#!/usr/bin/env bash set -e echo 'Testing whether migrations are consistent with models' # Check if any migration looks to have a meaningless 'auto' name, # other than the existing handful from 2016 and 2017. new_auto_named_migrations=$(./manage.py showmigrations \ | grep -E ' [0-9]{4}_auto_' \ | grep -Eve ' [0-9]{4}_auto_201[67]' \ -e ' 0052_auto_fix_realmalias_realm_nullable' \ -e ' 0003_auto_20150817_1733' \ -e ' 0002_auto_20150110_0810' \ -e ' 0002_auto_20190420_0723' \ -e ' 0009_auto_20191118_0520' \ -e ' 0007_auto_20201201_1019' \ | sed 's/\[[x ]\] / /' \ || true) if [ "$new_auto_named_migrations" != "" ]; then echo "ERROR: New migrations with unclear automatically generated names." echo "Please rename these migrations to have readable names:" echo echo "$new_auto_named_migrations" echo echo 'See https://zulip.readthedocs.io/en/latest/subsystems/schema-migrations.html for advice.' echo exit 1 fi if ! ./manage.py makemigrations --check --dry-run; then echo # shellcheck disable=SC2016 echo 'ERROR: Migrations are not consistent with models! Fix with `./tools/renumber-migrations`.' echo 'See https://zulip.readthedocs.io/en/latest/subsystems/schema-migrations.html for details.' echo exit 1 fi echo "Success! Migrations are consistent with models."