diff --git a/.gitignore b/.gitignore index dbec55f..67d2c48 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ *.sw[op] +/t/*.sh +/t/*.out +/t/*.err diff --git a/t/00-build-artifacts.test b/t/00-build-artifacts.test new file mode 100644 index 0000000..2575550 --- /dev/null +++ b/t/00-build-artifacts.test @@ -0,0 +1,11 @@ +#! /bin/bash +readonly nginx_path="${PREFIX}/sbin/nginx" +readonly so_path="${PREFIX}/modules/ngx_http_fancyindex_module.so" + +[[ -x ${nginx_path} ]] \ + || fail "executable binary not found at '%s'\n" "${nginx_path}" + +if ${DYNAMIC} ; then + [[ -r ${so_path} ]] \ + || fail "module not found at '%s'\n" "${so_path}" +fi diff --git a/t/run b/t/run new file mode 100755 index 0000000..9347350 --- /dev/null +++ b/t/run @@ -0,0 +1,69 @@ +#! /bin/bash +set -e + +if [[ $# -lt 1 || $# -gt 2 ]] ; then + echo "Usage: $0 [1]" 1>&2 + exit 1 +fi + +readonly T=$(dirname "$0") +export T + +readonly prefix=$1 + +dynamic=false +if [[ $# -gt 1 && $2 -eq 1 ]] ; then + dynamic=true +fi +readonly dynamic + +readonly preamble=' +function fail () { + printf "(FF) " + printf "$@" + exit 1 +} 1>&2 +function warn () { + printf "(WW)" + printf "$@" +} 1>&2 +' + +declare -a t_pass=( ) +declare -a t_fail=( ) + +for t in "$T"/*.test ; do + name="t/${t##*/}" + name=${name%.test} + printf "${name} ... " + errfile="${name}.err" + outfile="${name}.out" + shfile="${name}.sh" + cat > "${shfile}" <<-EOF + ${preamble} + readonly PREFIX='${prefix}' + readonly DYNAMIC=${dynamic} + $(< "$t") + EOF + if bash -e "${shfile}" > "${outfile}" 2> "${errfile}" ; then + t_pass+=( "${name}" ) + printf 'passed\n' + else + t_fail+=( "${name}" ) + printf 'failed\n' + fi +done + +for name in "${t_fail[@]}" ; do + printf '=== %s.out ===\n' "${name}" + cat "${name}.out" + printf '=== %s.err ===\n' "${name}" + cat "${name}.err" +done + +printf '=== passed/failed/total: %d/%d/%d ===\n' \ + ${#t_pass[@]} ${#t_fail[@]} $(( ${#t_pass[@]} + ${#t_fail[@]} )) + +if [[ ${#t_fail[@]} -gt 0 ]] ; then + exit 1 +fi