git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Richard Hansen <rhansen@bbn.com>
To: git@vger.kernel.org
Cc: rhansen@bbn.com
Subject: [PATCH v2 10/11] test-lib: make it possible to override how test code is eval'd
Date: Wed,  4 Jun 2014 17:01:26 -0400	[thread overview]
Message-ID: <1401915687-8602-11-git-send-email-rhansen@bbn.com> (raw)
In-Reply-To: <1401915687-8602-1-git-send-email-rhansen@bbn.com>

If a command named 'test_eval_override' exists, use it instead of
'eval' to run the test code.

This is needed to support zsh test cases:  test-lib.sh must be sourced
in sh emulation mode due to fundamental incompatibilities between the
POSIX sh language and the zsh language.  When a function is defined
while zsh is emulating some shell, zsh notes the shell that is being
emulated and records it along with the function definition.  This
enables zsh to temporarily re-enable the shell emulation mode whenever
the function is called, allowing zsh scripts to mix and match code
written for different shell languages.  (This description of zsh shell
emulation is not completely accurate, but it's close enough.)

Because test_eval_ is defined while zsh is in sh emulation mode, the
shell code passed as an argument to test_expect_success would normally
be evaluated in sh emulation mode.  However, with this change, it is
now possible to evaluate the test code in zsh mode by adding the
following line to a zsh-based test script:

    emulate -R zsh -c 'test_eval_override () { eval "$*"; }'

With test_eval_override defined in zsh emulation mode, the call to
test_eval_override from test_eval_ will temporarily cause zsh to
switch from sh emulation mode to zsh emulation mode.

Signed-off-by: Richard Hansen <rhansen@bbn.com>
---
 t/test-lib.sh | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/t/test-lib.sh b/t/test-lib.sh
index c081668..3779634 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -414,7 +414,12 @@ maybe_setup_valgrind () {
 test_eval_ () {
 	# This is a separate function because some tests use
 	# "return" to end a test_expect_success block early.
-	eval </dev/null >&3 2>&4 "$*"
+	if command -v test_eval_override >/dev/null 2>&1
+	then
+		test_eval_override "$*"
+	else
+		eval "$*"
+	fi </dev/null >&3 2>&4
 }
 
 test_run_ () {
-- 
2.0.0

  parent reply	other threads:[~2014-06-04 21:02 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-19 22:55 [PATCH] git-prompt.sh: don't assume the shell expands the value of PS1 Richard Hansen
2014-05-20 18:38 ` Junio C Hamano
2014-05-27  7:40   ` [PATCH 00/10] Zsh prompt tests Richard Hansen
2014-05-27  7:40     ` [PATCH 01/10] t9903: remove Zsh test from the suite of Bash " Richard Hansen
2014-05-27  7:40     ` [PATCH 02/10] t9903: put the Bash pc mode prompt test cases in a function Richard Hansen
2014-05-27  7:40     ` [PATCH 03/10] t9903: move test name prefix to a separate variable Richard Hansen
2014-05-27  7:40     ` [PATCH 04/10] t9903: run pc mode tests again with PS1 expansion disabled Richard Hansen
2014-05-27  7:40     ` [PATCH 05/10] t9903: include "Bash" in test names via new $shellname var Richard Hansen
2014-05-27  7:40     ` [PATCH 06/10] t9903: move PS1 color code variable definitions to lib-bash.sh Richard Hansen
2014-05-27  7:40     ` [PATCH 07/10] t9903: move prompt tests to a new lib-prompt-tests.sh file Richard Hansen
2014-05-27  7:40     ` [PATCH 08/10] lib-prompt-tests.sh: put all tests inside a function Richard Hansen
2014-05-27  7:40     ` [PATCH 09/10] lib-prompt-tests.sh: add variable for string that encodes percent in PS1 Richard Hansen
2014-05-27  7:41     ` [PATCH 10/10] t9904: new __git_ps1 tests for Zsh Richard Hansen
2014-05-29 19:02       ` Thomas Rast
2014-05-29 22:30         ` [PATCH 11/10] fixup! " Richard Hansen
2014-06-04 21:01     ` [PATCH v2 00/11] Zsh prompt tests Richard Hansen
2014-06-04 21:01       ` [PATCH v2 01/11] t9903: remove Zsh test from the suite of Bash " Richard Hansen
2014-06-04 21:01       ` [PATCH v2 02/11] t9903: put the Bash pc mode prompt test cases in a function Richard Hansen
2014-06-04 21:01       ` [PATCH v2 03/11] t9903: move test name prefix to a separate variable Richard Hansen
2014-06-04 21:01       ` [PATCH v2 04/11] t9903: run pc mode tests again with PS1 expansion disabled Richard Hansen
2014-06-04 21:01       ` [PATCH v2 05/11] t9903: include "Bash" in test names via new $shellname var Richard Hansen
2014-06-04 21:01       ` [PATCH v2 06/11] t9903: move PS1 color code variable definitions to lib-bash.sh Richard Hansen
2014-06-04 21:01       ` [PATCH v2 07/11] t9903: move prompt tests to a new lib-prompt-tests.sh file Richard Hansen
2014-06-04 21:01       ` [PATCH v2 08/11] lib-prompt-tests.sh: put all tests inside a function Richard Hansen
2014-06-04 21:01       ` [PATCH v2 09/11] lib-prompt-tests.sh: add variable for string that encodes percent in PS1 Richard Hansen
2014-06-04 21:01       ` Richard Hansen [this message]
2014-06-05 21:11         ` [PATCH v2 10/11] test-lib: make it possible to override how test code is eval'd Junio C Hamano
2014-06-06  1:00           ` Richard Hansen
2014-06-06 16:53             ` Junio C Hamano
2014-06-04 21:01       ` [PATCH v2 11/11] t9904: new __git_ps1 tests for Zsh Richard Hansen
2014-06-10 20:06       ` [PATCH v2 00/11] Zsh prompt tests Torsten Bögershausen
2014-06-10 20:28         ` Richard Hansen
2014-06-11  1:16           ` brian m. carlson
2014-06-11 15:27             ` Richard Hansen
2014-06-11 23:46               ` brian m. carlson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1401915687-8602-11-git-send-email-rhansen@bbn.com \
    --to=rhansen@bbn.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).