Re: [PATCH] test-lib.sh: work around ksh's trap shortcomings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Brandon Casey <casey@xxxxxxxxxxxxxxx> writes:

> In ksh, if trap is called within a function with 0 or EXIT as its signal,
> then the trap will be executed at the time the function returns. This
> causes a problem in the test functions since 'trap - exit' is called
> within the test_done function

Your alias test_done that calls function test_done look ugly and confusing
beyond words.  Perhaps test_done() can instead set a global variable and
die() can notice it instead, like this?  I haven't bothered to change the
other "trap - exit" but I think you got the idea...

diff --git a/t/test-lib.sh b/t/test-lib.sh
index 11c0275..010bfda 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -156,10 +156,16 @@ test_count=0
 test_fixed=0
 test_broken=0
 test_success=0
+test_exit_ok=0
 
 die () {
-	echo >&5 "FATAL: Unexpected exit with code $?"
-	exit 1
+	status=$?
+	if test 1 != $test_exit_ok
+	then
+		echo >&5 "FATAL: Unexpected exit with code $status"
+		exit 1
+	fi
+	exit $status
 }
 
 trap 'die' exit
@@ -415,6 +421,7 @@ test_create_repo () {
 }
 
 test_done () {
+	test_exit_ok=1
 	trap - exit
 	test_results_dir="$TEST_DIRECTORY/test-results"
 	mkdir -p "$test_results_dir"
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux