Git development
 help / color / mirror / Atom feed
* [PATCH] t0005: add test for trap handling from deeply nested function calls
@ 2010-03-26 16:34 Brandon Casey
  2010-03-26 20:10 ` Junio C Hamano
  2010-03-26 20:19 ` Johannes Sixt
  0 siblings, 2 replies; 4+ messages in thread
From: Brandon Casey @ 2010-03-26 16:34 UTC (permalink / raw)
  To: gitster; +Cc: git, Brandon Casey

From: Brandon Casey <drafnel@gmail.com>

The /usr/xpg4/bin/sh shell on Solaris only executes a trap handler set
within a function from the first-level function call made from within the
function that set the trap.  In other words, if func1 sets a trap, then
calls func2 which triggers the trap, then the trap handler will be executed
correctly.  If instead of exiting, func2 calls func3, and func3 satisfies
the conditions for triggering the trap, the trap handler will NOT be
executed.

This trap sequence exists in git-bisect.sh and is exercised by tests
t6030.12 and t6030.13 which fail when the /usr/xpg4/bin/sh shell is used.

Add a test that will fail sooner and more precisely than the t6030 tests.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
---


Improvements to the commit message are welcome.

-brandon


 t/t0005-signals.sh |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/t/t0005-signals.sh b/t/t0005-signals.sh
index 09f855a..cb68d1f 100755
--- a/t/t0005-signals.sh
+++ b/t/t0005-signals.sh
@@ -19,4 +19,12 @@ test_expect_success 'sigchain works' '
 	test_cmp expect actual
 '
 
+test_expect_success 'trap triggered in deeply nested function works correctly' '
+	(atrap () { exit 0; }
+	 func3 () { exit 1; }
+	 func2 () { func3; }
+	 func1 () { trap atrap EXIT; func2; }
+	 func1)
+'
+
 test_done
-- 
1.6.6.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-03-27  0:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-26 16:34 [PATCH] t0005: add test for trap handling from deeply nested function calls Brandon Casey
2010-03-26 20:10 ` Junio C Hamano
2010-03-26 20:19 ` Johannes Sixt
2010-03-27  0:24   ` Brandon Casey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox