aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2022-07-14 15:06:11 +0200
committerEelco Dolstra <edolstra@gmail.com>2022-07-14 15:07:19 +0200
commit2532fee157adf45bcd262f0f24a1740990df6e76 (patch)
tree3420a5cfcc17d632a5ff1ac039df524d27c3976a
parent819615c7f477799c6a0fcd1953012a393907c9eb (diff)
On test failures, print a bash stack trace
This makes it easier to identify what command failed. It looks like: follow-paths.sh: test failed at: main in follow-paths.sh:54
-rw-r--r--tests/common.sh.in19
1 files changed, 15 insertions, 4 deletions
diff --git a/tests/common.sh.in b/tests/common.sh.in
index 5efd025ee..79da10199 100644
--- a/tests/common.sh.in
+++ b/tests/common.sh.in
@@ -119,11 +119,11 @@ killDaemon() {
}
restartDaemon() {
- [[ -z "${pidDaemon:-}" ]] && return 0
+ [[ -z "${pidDaemon:-}" ]] && return 0
- killDaemon
- unset NIX_REMOTE
- startDaemon
+ killDaemon
+ unset NIX_REMOTE
+ startDaemon
}
if [[ $(uname) == Linux ]] && [[ -L /proc/self/ns/user ]] && unshare --user true; then
@@ -190,4 +190,15 @@ if [[ -n "${NIX_DAEMON_PACKAGE:-}" ]]; then
startDaemon
fi
+onError() {
+ set +x
+ echo "$0: test failed at:" >&2
+ for ((i = 1; i < 16; i++)); do
+ if [[ -z ${BASH_SOURCE[i]} ]]; then break; fi
+ echo " ${FUNCNAME[i]} in ${BASH_SOURCE[i]}:${BASH_LINENO[i-1]}" >&2
+ done
+}
+
+trap onError ERR
+
fi # COMMON_SH_SOURCED