Emmanuel BENOîT
1ae9a15f6e
* The script will no longer fail when there are no tests matching the requested name in either admin/ or user/ * The script will ignore non-SQL files when running with --run-name
65 lines
1.3 KiB
Bash
Executable file
65 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
[ -z "$3" ] && {
|
|
echo "Syntax: $0 test-database admin-user test-user [misc]" >&2
|
|
echo
|
|
echo "Where misc is:"
|
|
echo " --no-create don't create the DB"
|
|
echo " --run-name name run tests matching '*name*'"
|
|
echo
|
|
exit 1
|
|
}
|
|
|
|
test_db="$1"
|
|
admin_user="$2"
|
|
test_user="$3"
|
|
|
|
create_db=1
|
|
run_name=""
|
|
while ! [ -z "$4" ]; do
|
|
if [ "x$4" = "x--no-create" ]; then
|
|
create_db=0
|
|
elif [ "x$4" = "x--run-name" ]; then
|
|
shift
|
|
run_name="$4"
|
|
fi
|
|
|
|
shift
|
|
done
|
|
|
|
scriptdir="`dirname $0`"
|
|
tempdir="`mktemp -d`"
|
|
cp -Rap $scriptdir/../../legacyworlds-server-data/db-structure/* $tempdir/
|
|
cat > $tempdir/db-config.txt <<EOF
|
|
admin=$admin_user
|
|
db=$test_db
|
|
user=$test_user
|
|
password=$test_user
|
|
EOF
|
|
|
|
(
|
|
cd $tempdir
|
|
|
|
if [ $create_db -eq 1 ]; then
|
|
echo "Creating DB..."
|
|
psql -vQUIET=1 -vON_ERROR_STOP=1 --file database.sql || exit 1
|
|
psql -vQUIET=1 -f tests/pgtap.sql $test_db || exit 1
|
|
fi
|
|
|
|
cd tests
|
|
if [ "x$run_name" = "x" ]; then
|
|
run_name='*.sql'
|
|
else
|
|
run_name='*'"$run_name"'*.sql'
|
|
fi
|
|
if ! [ -z "`find admin/ -type f -name "$run_name"`" ]; then
|
|
pg_prove -d $test_db `find admin/ -type f -name "$run_name" | sort` || exit 1
|
|
fi
|
|
if ! [ -z "`find user/ -type f -name "$run_name"`" ]; then
|
|
pg_prove -U $test_user -d $test_db `find user/ -type f -name "$run_name" | sort` || exit 1
|
|
fi
|
|
)
|
|
result=$?
|
|
|
|
rm -rf $tempdir
|
|
exit $result
|