57 lines
1.7 KiB
Bash
Executable File
57 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
docker rm -f $(docker ps -a -q)
|
|
|
|
docker volume rm $(docker volume ls -q)
|
|
|
|
docker-compose -f docker-compose.test.yml up -d test-db
|
|
sleep 5s
|
|
|
|
export HOST_NAME=localhost
|
|
export PORT=8066
|
|
export USER=vdbm
|
|
export TEST_DB=vulcanize_testing
|
|
export TEST_CONNECT_STRING=postgresql://$USER@$HOST_NAME:$PORT/$TEST_DB?sslmode=disable
|
|
export PGPASSWORD=password
|
|
|
|
# Get count of total number of migrations
|
|
Count=$(find ./db/migrations -name "*sql" -type f | wc -l | awk '{print $1}')
|
|
|
|
goose -dir ./db/migrations postgres "$TEST_CONNECT_STRING" status
|
|
|
|
clean_up () {
|
|
rm schema*.sql
|
|
}
|
|
trap clean_up EXIT
|
|
|
|
while true;
|
|
do
|
|
pg_dump -h localhost -p $PORT -U $USER $TEST_DB --no-owner --schema-only > schema1.sql
|
|
|
|
# take action on each file. $f store current file name
|
|
goose -dir ./db/migrations postgres "$TEST_CONNECT_STRING" up-by-one
|
|
|
|
goose -dir ./db/migrations postgres "$TEST_CONNECT_STRING" down
|
|
|
|
pg_dump -h localhost -p $PORT -U $USER $TEST_DB --no-owner --schema-only > schema2.sql
|
|
|
|
if ! ./scripts/check_diff.sh schema1.sql schema2.sql &> /dev/null;
|
|
then
|
|
# Column names are reordered when they are added back.
|
|
sed "s/\,//" schema1.sql | sort > schema1-sorted.sql
|
|
sed "s/\,//" schema2.sql | sort > schema2-sorted.sql
|
|
if ! ./scripts/check_diff.sh schema1-sorted.sql schema2-sorted.sql &> /dev/null;
|
|
then
|
|
echo "Up and Down migrations doesn't match for this migrations"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
goose -dir ./db/migrations postgres "$TEST_CONNECT_STRING" up-by-one
|
|
|
|
Version=$(goose -dir ./db/migrations postgres "$TEST_CONNECT_STRING" version 2>&1 | sed 's/.*version //')
|
|
if [ "$Count" = "$Version" ]
|
|
then
|
|
exit 0
|
|
fi
|
|
done |