2016-01-18 10:56:48 +00:00
#!/bin/sh
# this is a very simple script that tests the docker configuration for cookiecutter-django
# it is meant to be run from the root directory of the repository, eg:
# sh tests/test_docker.sh
2019-03-18 17:49:43 +00:00
set -o errexit
2020-10-04 14:56:17 +00:00
set -x
2019-03-18 17:49:43 +00:00
2016-01-18 10:56:48 +00:00
# create a cache directory
mkdir -p .cache/docker
cd .cache/docker
# create the project using the default settings in cookiecutter.json
2022-01-04 17:48:21 +00:00
cookiecutter ../../ --no-input --overwrite-if-exists use_docker = y " $@ "
2018-03-04 12:18:27 +00:00
cd my_awesome_project
2016-01-18 10:56:48 +00:00
2021-11-11 19:21:16 +00:00
# make sure all images build
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.local.yml build
2021-11-11 19:21:16 +00:00
2019-04-02 14:10:14 +00:00
# run the project's type checks
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.local.yml run django mypy my_awesome_project
2018-08-19 11:08:29 +00:00
2019-04-02 14:10:14 +00:00
# run the project's tests
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.local.yml run django pytest
2019-04-02 14:10:14 +00:00
# return non-zero status code if there are migrations that have not been created
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.local.yml run django python manage.py makemigrations --dry-run --check || { echo "ERROR: there were changes in the models, but migration listed above have not been created and are not saved in version control" ; exit 1; }
2019-04-02 14:10:14 +00:00
# Test support for translations
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.local.yml run django python manage.py makemessages --all
2021-12-24 19:35:09 +00:00
# Make sure the check doesn't raise any warnings
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.local.yml run \
2024-02-07 13:18:34 +00:00
-e DJANGO_SECRET_KEY = " $( openssl rand -base64 64) " \
-e REDIS_URL = redis://redis:6379/0 \
-e CELERY_BROKER_URL = redis://redis:6379/0 \
-e DJANGO_AWS_ACCESS_KEY_ID = x \
-e DJANGO_AWS_SECRET_ACCESS_KEY = x \
-e DJANGO_AWS_STORAGE_BUCKET_NAME = x \
-e DJANGO_ADMIN_URL = x \
-e MAILGUN_API_KEY = x \
-e MAILGUN_DOMAIN = x \
django python manage.py check --settings= config.settings.production --deploy --database default --fail-level WARNING
2021-12-28 15:35:56 +00:00
# Generate the HTML for the documentation
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.docs.yml run docs make html
2023-01-29 12:12:12 +00:00
# Run npm build script if package.json is present
if [ -f "package.json" ]
then
2024-05-13 17:18:56 +00:00
docker compose -f docker-compose.local.yml run node npm run build
2023-01-29 12:12:12 +00:00
fi