From 3aac8930cc7cfcf8a6b6f01f6d6293ed0f9c62f6 Mon Sep 17 00:00:00 2001 From: Gavin Bisesi Date: Mon, 30 Nov 2015 20:51:00 -0500 Subject: [PATCH] Add script to validate schema changes. Basic assertions about version updates --- servatrice/check_schema_version.sh | 33 ++++++++++++++++++++++++++++++ travis-compile.sh | 4 +++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100755 servatrice/check_schema_version.sh diff --git a/servatrice/check_schema_version.sh b/servatrice/check_schema_version.sh new file mode 100755 index 00000000..d59edc7a --- /dev/null +++ b/servatrice/check_schema_version.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -e + +schema_ver="$(grep 'INSERT INTO cockatrice_schema_version' servatrice/servatrice.sql | sed 's/.*VALUES(//' | sed 's/).*//')" + +latest_migration="$(ls -1 servatrice/migrations/ | tail -n1)" +xtoysql="${latest_migration#servatrice_}" +xtoy="${xtoysql%.sql}" +old_ver="$(echo ${xtoy%%_to_*} | bc)" +new_ver="$(echo ${xtoy##*_to_} | bc)" + +if ((old_ver >= new_ver)); then + echo "New version $new_ver is not newer than $old_ver" + exit 1 +fi + +if ((schema_ver != new_ver)); then + echo "Schema version $schema_ver does not equal new version $new_ver" + exit 1 +fi + +expected_sql="^UPDATE cockatrice_schema_version SET version=${new_ver} WHERE version=${old_ver};$" +if ! grep -q "$expected_sql" servatrice/migrations/$latest_migration; then + echo "$latest_migration does not contain expected sql: $expected_sql" + exit 1 +fi + +expected_define="^#define DATABASE_SCHEMA_VERSION $new_ver$" +if ! grep -q "$expected_define" servatrice/src/servatrice_database_interface.h; then + echo "servatrice_database_interface.h does not contain expected #define: $expected_define" + exit 1 +fi diff --git a/travis-compile.sh b/travis-compile.sh index 6f24558c..0d26c5e4 100755 --- a/travis-compile.sh +++ b/travis-compile.sh @@ -2,6 +2,8 @@ set -e +./servatrice/check_schema_version.sh + mkdir build cd build prefix="" @@ -20,4 +22,4 @@ if [[ $BUILDTYPE == "Debug" ]]; then else cmake .. -DWITH_SERVER=1 -DCMAKE_BUILD_TYPE=$BUILDTYPE -DWITH_QT4=$QT4 $prefix make package -j2 -fi \ No newline at end of file +fi