From 18e2c3a59d0f95704b4aba29523df32c3ca9e20d Mon Sep 17 00:00:00 2001 From: Carla Date: Mon, 22 Jun 2015 15:34:23 +0200 Subject: [PATCH] Adds test suite structure --- geocoder/test/test.sh | 157 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 geocoder/test/test.sh diff --git a/geocoder/test/test.sh b/geocoder/test/test.sh new file mode 100644 index 0000000..6b729b6 --- /dev/null +++ b/geocoder/test/test.sh @@ -0,0 +1,157 @@ +#!/bin/sh + +# +# It is expected that you run this script +# as a PostgreSQL superuser, for example: +# +# PGUSER=postgres bash ./test.sh +# + +DATABASE=test_geocoding +CMD='echo psql' +CMD=psql + +OK=0 +PARTIALOK=0 + +function set_failed() { + OK=1 + PARTIALOK=1 +} + + +function clear_partial_result() { + PARTIALOK=0 +} + + +function sql() { + local ROLE + local QUERY + if [[ $# -ge 2 ]] + then + ROLE="$1" + QUERY="$2" + else + QUERY="$1" + fi + + if [ -n "${ROLE}" ]; then + log_debug "Executing query '${QUERY}' as ${ROLE}" + RESULT=`${CMD} -U "${ROLE}" ${DATABASE} -c "${QUERY}" -A -t` + else + log_debug "Executing query '${QUERY}'" + RESULT=`${CMD} ${DATABASE} -c "${QUERY}" -A -t` + fi + CODERESULT=$? + + echo ${RESULT} + echo + + if [[ ${CODERESULT} -ne 0 ]] + then + echo -n "FAILED TO EXECUTE QUERY: " + log_warning "${QUERY}" + if [[ "$3" != "fails" ]] + then + log_error "${QUERY}" + set_failed + fi + else + if [[ "$3" == "fails" ]] + then + log_error "QUERY: '${QUERY}' was expected to fail and it did not fail" + set_failed + fi + fi + + if [[ "$3" == "should" ]] + then + if [[ "${RESULT}" != "$4" ]] + then + log_error "QUERY '${QUERY}' expected result '${4}' but got '${RESULT}'" + set_failed + fi + fi +} + + +function log_info() +{ + echo + echo + echo + _log "1;34m" "$1" +} + +function log_error() { + _log "1;31m" "$1" +} + +function log_debug() { + _log "1;32m" "> $1" +} + +function log_warning() { + _log "0;33m" "$1" +} + +function _log() { + echo -e "\033[$1$2\033[0m" +} + +# '############################ HELPERS #############################' +function setup() { + +} + +function tear_down() { + +} + +function run_tests() { + local FAILED_TESTS=() + + local TESTS + if [[ $# -ge 1 ]] + then + TESTS="$@" + else + TESTS=`cat $0 | perl -n -e'/function (test.*)\(\)/ && print "$1\n"'` + fi + for t in ${TESTS} + do + echo "####################################################################" + echo "#" + echo "# Running: ${t}" + echo "#" + echo "####################################################################" + clear_partial_result + #setup + eval ${t} + if [[ ${PARTIALOK} -ne 0 ]] + then + FAILED_TESTS+=(${t}) + fi + #tear_down + done + if [[ ${OK} -ne 0 ]] + then + echo + log_error "The following tests are failing:" + printf -- '\t%s\n' "${FAILED_TESTS[@]}" + fi +} + + + +#################################################### TESTS GO HERE #################################################### + + +#################################################### TESTS END HERE #################################################### + + + +run_tests $@ + +exit ${OK} \ No newline at end of file