From 0aa496b6d5d8953ed51d5601f4cdf1d4cf19b82c Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 6 Sep 2021 04:38:58 +0000 Subject: [PATCH 1/3] test-lib-functions: use 'TEST_SHELL_PATH' in 'test_pause' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3f824e91c8 (t/Makefile: introduce TEST_SHELL_PATH, 2017-12-08) made it easy to use a different shell for the tests than 'SHELL_PATH' used at compile time. But 'test_pause' still invokes 'SHELL_PATH'. If TEST_SHELL_PATH is set, invoke that shell in 'test_pause' for consistency. Suggested-by: Carlo Marcelo Arenas Belón Signed-off-by: Philippe Blain Acked-by: Elijah Newren Signed-off-by: Junio C Hamano --- t/test-lib-functions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index e28411bb75..1884177e29 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -139,7 +139,7 @@ test_tick () { # Be sure to remove all invocations of this command before submitting. test_pause () { - "$SHELL_PATH" <&6 >&5 2>&7 + "$TEST_SHELL_PATH" <&6 >&5 2>&7 } # Wrap git with a debugger. Adding this to a command can make it easier From add5240fa53fef8c9fad9081d927ffb9cbaaeb56 Mon Sep 17 00:00:00 2001 From: Philippe Blain Date: Mon, 6 Sep 2021 04:38:59 +0000 Subject: [PATCH 2/3] test-lib-functions: optionally keep HOME, TERM and SHELL in 'test_pause' The 'test_pause' function, which is designed to help interactive debugging and exploration of tests, currently inherits the value of HOME and TERM set by 'test-lib.sh': HOME="$TRASH_DIRECTORY" and TERM=dumb. It also invokes the shell defined by TEST_SHELL_PATH, which defaults to /bin/sh (through SHELL_PATH). Changing the value of HOME means that any customization configured in a developers' shell startup files and any Git aliases defined in their global Git configuration file are not available in the shell invoked by 'test_pause'. Changing the value of TERM to 'dumb' means that colored output is disabled for all commands in that shell. Using /bin/sh as the shell invoked by 'test_pause' is not ideal since some platforms (i.e. Debian and derivatives) use Dash as /bin/sh, and this shell is usually compiled without readline support, which makes for a poor interactive command line experience. To make the interactive command line experience in the shell invoked by 'test_pause' more pleasant, save the values of HOME and TERM in USER_HOME and USER_TERM before changing them in test-lib.sh, and add options to 'test_pause' to optionally use these variables to invoke the shell. Also add an option to invoke SHELL instead of TEST_SHELL_PATH, so that developer's interactive shell is used. We use options instead of changing the behaviour unconditionally since these three variables can slightly change command behaviour. Moreover, using the original HOME means commands could overwrite files in a user's home directory. Be explicit about these caveats in the new 'Usage' section in test-lib-functions.sh. Finally, add '[options]' to the test_pause synopsys in t/README, and mention that the full list of helper functions and their options can be found in test-lib-functions.sh. Helped-by: Elijah Newren Signed-off-by: Philippe Blain Acked-by: Elijah Newren Signed-off-by: Junio C Hamano --- t/README | 5 +++-- t/test-lib-functions.sh | 47 ++++++++++++++++++++++++++++++++++++++++- t/test-lib.sh | 6 ++++-- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/t/README b/t/README index 9e70122302..cc8be6e67a 100644 --- a/t/README +++ b/t/README @@ -753,7 +753,8 @@ Test harness library -------------------- There are a handful helper functions defined in the test harness -library for your script to use. +library for your script to use. Some of them are listed below; +see test-lib-functions.sh for the full list and their options. - test_expect_success []