From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: git@vger.kernel.org
Cc: "Jeff King" <peff@peff.net>, "Junio C Hamano" <gitster@pobox.com>,
"SZEDER Gábor" <szeder.dev@gmail.com>
Subject: [PATCH v2 2/7] test-lib: parse some --options earlier
Date: Sun, 9 Dec 2018 23:56:23 +0100 [thread overview]
Message-ID: <20181209225628.22216-3-szeder.dev@gmail.com> (raw)
In-Reply-To: <20181209225628.22216-1-szeder.dev@gmail.com>
'test-lib.sh' looks for the presence of certain options like '--tee'
and '--verbose-log', so it can execute the test script again to save
its standard output and error. This happens way before the actual
option parsing loop, and the condition looking for these options looks
a bit odd, too. This patch series will add two more options to look
out for, and, in addition, will have to extract these options' stuck
arguments (i.e. '--opt=arg') as well.
Add a proper option parsing loop to check these select options early
in 'test-lib.sh', making this early option checking more readable and
keeping those later changes in this series simpler. Use a 'for opt in
"$@"' loop to iterate over the options to preserve "$@" intact, so
options like '--verbose-log' can execute the test script again with
all the original options.
As an alternative, we could parse all options early, but there are
options that do require an _unstuck_ argument, which is tricky to
handle properly in such a for loop, and the resulting complexity is,
in my opinion, worse than having this extra, partial option parsing
loop.
Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
---
t/test-lib.sh | 53 +++++++++++++++++++++++++++++++--------------------
1 file changed, 32 insertions(+), 21 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 9a3f7930a3..5577d9dc5a 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -71,13 +71,33 @@ then
exit 1
fi
+# Parse some options early, taking care to leave $@ intact.
+for opt
+do
+ case "$opt" in
+ --tee)
+ tee=t ;;
+ -V|--verbose-log)
+ verbose_log=t ;;
+ --va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind)
+ valgrind=memcheck ;;
+ --valgrind=*)
+ valgrind=${opt#--*=} ;;
+ --valgrind-only=*)
+ valgrind_only=${opt#--*=} ;;
+ *)
+ # Other options will be handled later.
+ esac
+done
+
# if --tee was passed, write the output not only to the terminal, but
# additionally to the file test-results/$BASENAME.out, too.
-case "$GIT_TEST_TEE_STARTED, $* " in
-done,*)
- # do not redirect again
- ;;
-*' --tee '*|*' --va'*|*' -V '*|*' --verbose-log '*)
+if test "$GIT_TEST_TEE_STARTED" = "done"
+then
+ : # do not redirect again
+elif test -n "$tee" || test -n "$verbose_log" ||
+ test -n "$valgrind" || test -n "$valgrind_only"
+then
mkdir -p "$TEST_OUTPUT_DIRECTORY/test-results"
BASE="$TEST_OUTPUT_DIRECTORY/test-results/$(basename "$0" .sh)"
@@ -94,8 +114,7 @@ done,*)
echo $? >"$BASE.exit") | tee -a "$GIT_TEST_TEE_OUTPUT_FILE"
test "$(cat "$BASE.exit")" = 0
exit
- ;;
-esac
+fi
# For repeatability, reset the environment to known value.
# TERM is sanitized below, after saving color control sequences.
@@ -296,17 +315,6 @@ do
with_dashes=t; shift ;;
--no-color)
color=; shift ;;
- --va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind)
- valgrind=memcheck
- shift ;;
- --valgrind=*)
- valgrind=${1#--*=}
- shift ;;
- --valgrind-only=*)
- valgrind_only=${1#--*=}
- shift ;;
- --tee)
- shift ;; # was handled already
--root=*)
root=${1#--*=}
shift ;;
@@ -336,9 +344,12 @@ do
echo >&2 "warning: ignoring -x; '$0' is untraceable without BASH_XTRACEFD"
fi
shift ;;
- -V|--verbose-log)
- verbose_log=t
- shift ;;
+ --tee|\
+ -V|--verbose-log|\
+ --va|--val|--valg|--valgr|--valgri|--valgrin|--valgrind|\
+ --valgrind=*|\
+ --valgrind-only=*)
+ shift ;; # These options were handled already.
*)
echo "error: unknown test option '$1'" >&2; exit 1 ;;
esac
--
2.20.0.rc2.156.g5a9fd2ce9c
next prev parent reply other threads:[~2018-12-09 22:56 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-04 16:34 [RFC PATCH 0/3] test-lib: add the '--stress' option to help reproduce occasional failures in flaky tests SZEDER Gábor
2018-12-04 16:34 ` [PATCH 1/3] test-lib: consolidate naming of test-results paths SZEDER Gábor
2018-12-05 4:57 ` Jeff King
2018-12-04 16:34 ` [PATCH 2/3] test-lib-functions: introduce the 'test_set_port' helper function SZEDER Gábor
2018-12-05 5:17 ` Jeff King
2018-12-05 12:20 ` SZEDER Gábor
2018-12-05 21:59 ` Jeff King
2018-12-04 16:34 ` [RFC PATCH 3/3] test-lib: add the '--stress' option to run a test repeatedly under load SZEDER Gábor
2018-12-04 17:04 ` Ævar Arnfjörð Bjarmason
2018-12-04 17:37 ` SZEDER Gábor
2018-12-05 5:46 ` Jeff King
2018-12-04 18:11 ` Ævar Arnfjörð Bjarmason
2018-12-05 5:50 ` Jeff King
2018-12-05 12:07 ` SZEDER Gábor
2018-12-05 14:01 ` Ævar Arnfjörð Bjarmason
2018-12-05 14:39 ` SZEDER Gábor
2018-12-05 19:59 ` Ævar Arnfjörð Bjarmason
2018-12-05 5:44 ` Jeff King
2018-12-05 10:34 ` SZEDER Gábor
2018-12-05 21:36 ` Jeff King
2018-12-06 0:22 ` Junio C Hamano
2018-12-06 5:35 ` Jeff King
2018-12-06 6:41 ` Junio C Hamano
2018-12-06 22:56 ` SZEDER Gábor
2018-12-07 1:03 ` Jeff King
2018-12-05 14:01 ` SZEDER Gábor
2018-12-05 21:56 ` Jeff King
2018-12-06 23:10 ` SZEDER Gábor
2018-12-07 1:14 ` Jeff King
2018-12-09 22:56 ` [PATCH v2 0/7] test-lib: add the '--stress' option to help reproduce occasional failures in flaky tests SZEDER Gábor
2018-12-09 22:56 ` [PATCH v2 1/7] test-lib: translate SIGTERM and SIGHUP to an exit SZEDER Gábor
2018-12-11 10:57 ` Jeff King
2018-12-09 22:56 ` SZEDER Gábor [this message]
2018-12-11 11:09 ` [PATCH v2 2/7] test-lib: parse some --options earlier Jeff King
2018-12-11 12:42 ` SZEDER Gábor
2018-12-17 21:44 ` Jeff King
2018-12-30 19:04 ` SZEDER Gábor
2019-01-03 4:53 ` Jeff King
2018-12-09 22:56 ` [PATCH v2 3/7] test-lib: consolidate naming of test-results paths SZEDER Gábor
2018-12-09 22:56 ` [PATCH v2 4/7] test-lib: set $TRASH_DIRECTORY earlier SZEDER Gábor
2018-12-09 22:56 ` [PATCH v2 5/7] test-lib: extract Bash version check for '-x' tracing SZEDER Gábor
2018-12-09 22:56 ` [PATCH v2 6/7] test-lib-functions: introduce the 'test_set_port' helper function SZEDER Gábor
2018-12-09 22:56 ` [PATCH v2 7/7] test-lib: add the '--stress' option to run a test repeatedly under load SZEDER Gábor
2018-12-10 1:34 ` [PATCH] fixup! " SZEDER Gábor
2018-12-11 11:16 ` [PATCH v2 0/7] test-lib: add the '--stress' option to help reproduce occasional failures in flaky tests Jeff King
2018-12-30 19:16 ` [PATCH v3 0/8] " SZEDER Gábor
2018-12-30 19:16 ` [PATCH v3 1/8] test-lib: translate SIGTERM and SIGHUP to an exit SZEDER Gábor
2018-12-30 19:16 ` [PATCH v3 2/8] test-lib: parse options in a for loop to keep $@ intact SZEDER Gábor
2018-12-30 19:16 ` [PATCH v3 3/8] test-lib: parse command line options earlier SZEDER Gábor
2018-12-30 19:16 ` [PATCH v3 4/8] test-lib: consolidate naming of test-results paths SZEDER Gábor
2018-12-30 19:16 ` [PATCH v3 5/8] test-lib: set $TRASH_DIRECTORY earlier SZEDER Gábor
2018-12-30 22:44 ` SZEDER Gábor
2018-12-30 22:48 ` [PATCH v3.1 " SZEDER Gábor
2018-12-30 19:16 ` [PATCH v3 6/8] test-lib: extract Bash version check for '-x' tracing SZEDER Gábor
2018-12-31 17:14 ` Carlo Arenas
2018-12-30 19:16 ` [PATCH v3 7/8] test-lib-functions: introduce the 'test_set_port' helper function SZEDER Gábor
2018-12-30 19:16 ` [PATCH v3 8/8] test-lib: add the '--stress' option to run a test repeatedly under load SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 0/8] test-lib: add the '--stress' option to help reproduce occasional failures in flaky tests SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 1/8] test-lib: translate SIGTERM and SIGHUP to an exit SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 2/8] test-lib: extract Bash version check for '-x' tracing SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 3/8] test-lib: parse options in a for loop to keep $@ intact SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 4/8] test-lib: parse command line options earlier SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 5/8] test-lib: consolidate naming of test-results paths SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 6/8] test-lib: set $TRASH_DIRECTORY earlier SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 7/8] test-lib-functions: introduce the 'test_set_port' helper function SZEDER Gábor
2019-01-05 1:08 ` [PATCH v4 8/8] test-lib: add the '--stress' option to run a test repeatedly under load SZEDER Gábor
2019-01-07 8:49 ` [PATCH v4 0/8] test-lib: add the '--stress' option to help reproduce occasional failures in flaky tests Jeff King
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=20181209225628.22216-3-szeder.dev@gmail.com \
--to=szeder.dev@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.