#!/usr/bin/env bash # A simple wrapper around stack # # This exists mainly to make it easier to pass arguments to test and benchmark # suites. if [[ $# -eq 0 ]]; then cat <<EOF Usage: $0 COMMAND [OPTS] Commands: --------- b[uild] [OPTS] build project t[est] u[nit] [OPTS] run unit tests t[est] e[xamples] [OPTS] run exampes t[est] d[octests] [OPTS] run doctests t[est] [OPTS] run all testsuites bench [OPTS] run the benchmark suite r[un] [OPTS] run the main program haddock [OPTS] build documentation EOF exit 1 fi doTest() { if [[ $# -eq 0 ]]; then exec stack test fi case "$1" in u|unit|s|spec) exec stack test :spec --test-arguments "${*:2}" ;; e|examples) exec stack test :examples --test-arguments "${*:2}" ;; d|doctests) exec stack test :doctests --test-arguments "${*:2}" ;; *) exec stack test "$@" esac } doBench() { exec stack bench :bench --benchmark-arguments "$*" } case "$1" in b|build) exec stack build "${@:2}" ;; t|test) doTest "${@:2}" ;; bench) doBench "${@:2}" ;; r|run) exec stack exec ma -- "${@:2}" ;; haddock) exec stack haddock :ma "${@:2}" ;; *) echo "Unknown command $1" exit 1 esac