#!/bin/bash -e dialects=("sqlite" "mysql" "postgres" "sqlserver" "tidb") if [[ $(pwd) == *"gorm/tests"* ]]; then cd .. fi if [ -d tests ] then cd tests go get -u -t ./... go mod download go mod tidy cd .. fi # Function for checking if binary is installed check_binary() { if ! which "$1" > /dev/null; then ( >&2 echo "$2" ) # Exit with a nonzero code so that the caller knows the script failed. exit 1 fi } check_binary "sqlcmd" "$(cat < /dev/null || true SQLCMDPASSWORD=LoremIpsum86 sqlcmd -U sa -S localhost:9930 -Q "IF SUSER_ID (N'gorm') IS NULL CREATE LOGIN gorm WITH PASSWORD = 'LoremIpsum86';" > /dev/null || true SQLCMDPASSWORD=LoremIpsum86 sqlcmd -U sa -S localhost:9930 -Q "IF USER_ID (N'gorm') IS NULL CREATE USER gorm FROM LOGIN gorm; ALTER SERVER ROLE sysadmin ADD MEMBER [gorm];" > /dev/null || true else docker-compose start fi cd .. fi fi for dialect in "${dialects[@]}" ; do if [ "$GORM_DIALECT" = "" ] || [ "$GORM_DIALECT" = "${dialect}" ] then echo "testing ${dialect}..." if [ "$GORM_VERBOSE" = "" ] then GORM_DIALECT=${dialect} go test -race -count=1 ./... if [ -d tests ] then cd tests GORM_DIALECT=${dialect} go test -race -count=1 ./... cd .. fi else GORM_DIALECT=${dialect} go test -race -count=1 -v ./... if [ -d tests ] then cd tests GORM_DIALECT=${dialect} go test -race -count=1 -v ./... cd .. fi fi fi done