#!/usr/bin/env bash set -e function migration_status { ./manage.py migrate --list --settings=zproject.test_settings | sed 's/*/ /' > "$1" } template_grep_error_code=$(echo "SELECT 1 from pg_database WHERE datname='zulip_test_template';" | python manage.py dbshell --settings=zproject.test_settings | grep -q "1 row"; echo $?) if [ "$template_grep_error_code" == "0" ]; then migration_status zerver/fixtures/available-migrations if [ -e zerver/fixtures/migration-status ] && cmp -s zerver/fixtures/available-migrations zerver/fixtures/migration-status && [ "$1" != "--force" ]; then "$(dirname "$0")/../../scripts/setup/terminate-psql-sessions" zulip zulip_test zulip_test_base zulip_test_template psql -h localhost postgres zulip_test << EOF DROP DATABASE IF EXISTS zulip_test; CREATE DATABASE zulip_test TEMPLATE zulip_test_template; EOF sh "$(dirname "$0")/../../scripts/setup/flush-memcached" exit 0 fi fi mkdir -p zerver/fixtures "$(dirname "$0")/../../scripts/setup/terminate-psql-sessions" zulip zulip_test zulip_test_base zulip_test_template psql -h localhost postgres zulip_test < zerver/fixtures/messages.json # create pristine template database, for fast fixture restoration after tests are run. psql -h localhost postgres zulip_test << EOF DROP DATABASE IF EXISTS zulip_test_template; CREATE DATABASE zulip_test_template TEMPLATE zulip_test; EOF