git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Brandon Casey <casey@nrlssc.navy.mil>
Date
Aug 19, 2008, 00:11 UTC
Message-ID
<20fxFRoix9DAAeLmqmpHU-KsSuokk8Un2zipN8uZkXEQln3EHA-Paw@cipher.nrlssc.navy.mil>
In-Reply-To
<IH0MHSTEimhAN93AedvpRKq4qfzm1QA814ZYyhbSBtSdNbq8vuE6aw@cipher.nrlssc.navy.mil>

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 in order to remove the trap which calls die() on exit. This means trap has to be called from the scripts top-level. Do so using an alias.

Additionally, there is some strangeness with respect to aliases and sourced script files; the alias hack doesn't work. So call 'trap - 0' directly in lib-git-svn.sh before calling the test_done function. ---

This is the same patch I posted earlier with respect to compiling on IRIX and Junio has suggested a more elegant solution.

-brandon
 t/lib-git-svn.sh |    3 +++
 t/test-lib.sh    |    2 +-
 2 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index a841df2..e2e8cf3 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -3,6 +3,7 @@
 if test -n "$NO_SVN_TESTS"
 then
 	test_expect_success 'skipping git-svn tests, NO_SVN_TESTS defined' :
+	trap - exit
 	test_done
 	exit
 fi
@@ -15,6 +16,7 @@ svn >/dev/null 2>&1
 if test $? -ne 1
 then
     test_expect_success 'skipping git-svn tests, svn not found' :
+    trap - exit
     test_done
     exit
 fi
@@ -39,6 +41,7 @@ then
 		err='Perl SVN libraries not found or unusable, skipping test'
 	fi
 	test_expect_success "$err" :
+	trap - exit
 	test_done
 	exit
 fi
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 11c0275..6a3fc93 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -415,7 +415,6 @@ test_create_repo () {
 }
 
 test_done () {
-	trap - exit
 	test_results_dir="$TEST_DIRECTORY/test-results"
 	mkdir -p "$test_results_dir"
 	test_results_path="$test_results_dir/${0%-*}-$$"
@@ -457,6 +456,7 @@ test_done () {
 
 	esac
 }
+alias test_done='trap - exit && test_done'
 
 # Test the binaries we have just built.  The tests are kept in
 # t/ subdirectory and are run in 'trash directory' subdirectory.
-- 
1.6.0.11.gecc7e
Previous: Brandon CaseyNext: Brandon Casey
Message 20 of 36 in “[FYI] How I compile on SunOS 5.7 with the SUNWspro compiler and ksh”
  1. Brandon CaseyAug 18, 2008
  2. Makefile: configuration for SunOS 5.7Brandon Casey, Aug 18, 2008
  3. dir.c: avoid c99 array initializationBrandon Casey, Aug 18, 2008
  4. David KågedalAug 28, 2008
  5. Andreas EricssonAug 28, 2008
  6. Brandon CaseyAug 28, 2008
  7. Junio C HamanoAug 28, 2008
  8. Brandon CaseyAug 28, 2008
  9. Alex RiesenAug 28, 2008
  10. Brandon CaseyAug 28, 2008
  11. Alex RiesenAug 28, 2008
  12. Shawn O. PearceAug 28, 2008
  13. Junio C HamanoAug 28, 2008
  14. dir.c: Avoid c99 array initializationBrandon Casey, Aug 28, 2008
  15. Alex RiesenAug 28, 2008
  16. Brandon CaseyAug 28, 2008
  17. Alex RiesenAug 28, 2008
  18. Johannes SchindelinAug 29, 2008
  19. reset,cat-file: remove const declaration from arrayBrandon Casey, Aug 19, 2008
  20. test-lib.sh: work around ksh's trap shortcomingsBrandon Casey, Aug 19, 2008
  21. t1002-read-tree-m-u-2way.sh: use 'git diff -U0' rather than 'diff -U0'Brandon Casey, Aug 19, 2008
  22. Work around sed issuesBrandon Casey, Aug 19, 2008
  23. t9301-fast-export.sh: don't unset config variable while we're skipping test 4Brandon Casey, Aug 19, 2008
  24. Jeff KingAug 19, 2008
  25. Brandon CaseyAug 19, 2008
  26. Jeff KingAug 19, 2008
  27. t9700/test.pl: backwards compatibility improvementsBrandon Casey, Aug 19, 2008
  28. Tom G. ChristensenSep 15, 2008
  29. Brandon CaseySep 15, 2008
  30. Brandon CaseySep 15, 2008
  31. 1/3 t9700/test.pl: no longer requires File::BasenameBrandon Casey, Sep 15, 2008
  32. 2/3 t9700/test.pl: avoid bareword 'STDERR' in 3-argument open()Brandon Casey, Sep 15, 2008
  33. 3/3 t9700/test.pl: remove File::Temp requirementBrandon Casey, Sep 15, 2008
  34. Tom G. ChristensenSep 15, 2008
  35. Alex RiesenAug 19, 2008
  36. Brandon CaseyAug 19, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.