From: "Michał Kiedrowicz" <michal.kiedrowicz@gmail.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, "Michał Kiedrowicz" <michal.kiedrowicz@gmail.com>
Subject: [PATCH] tests: Introduce test_seq
Date: Fri, 3 Aug 2012 21:57:15 +0200 [thread overview]
Message-ID: <1344023835-8947-1-git-send-email-michal.kiedrowicz@gmail.com> (raw)
In-Reply-To: <20120803160229.GA13094@sigill.intra.peff.net>
Jeff King wrote:
The seq command is GNU-ism, and is missing at least in older BSD
releases and their derivatives, not to mention antique
commercial Unixes.
We already purged it in b3431bc (Don't use seq in tests, not
everyone has it, 2007-05-02), but a few new instances have crept
in. They went unnoticed because they are in scripts that are not
run by default.
This commit replaces them with test_seq that is implemented with a Perl
snippet (proposed by Jeff). This is better than inlining this snippet
everywhere it's needed because it's easier to read and it's easier to
change the implementation (e.g. to C) if we ever decide to remove Perl
from the test suite.
Note that test_seq is not a complete replacement for seq(1). It just
has what we need now.
There are also many places that do `for i in 1 2 3 ...` but I'm not sure
if it's worth converting them to test_seq. That would introduce running
more processes of Perl during the tests and might increase the total
time tests take.
Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
---
> I don't have a strong preference, as there are only two callsites. Do
> you want to make a patch?
Sure. Here it is.
t/perf/perf-lib.sh | 2 +-
t/t5551-http-fetch.sh | 2 +-
t/test-lib-functions.sh | 14 ++++++++++++++
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index 5580c22..a1361e5 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -163,7 +163,7 @@ test_perf () {
else
echo "perf $test_count - $1:"
fi
- for i in $(seq 1 $GIT_PERF_REPEAT_COUNT); do
+ for i in $(test_seq 1 $GIT_PERF_REPEAT_COUNT); do
say >&3 "running: $2"
if test_run_perf_ "$2"
then
diff --git a/t/t5551-http-fetch.sh b/t/t5551-http-fetch.sh
index fadf2f2..91eaf53 100755
--- a/t/t5551-http-fetch.sh
+++ b/t/t5551-http-fetch.sh
@@ -114,7 +114,7 @@ test -n "$GIT_TEST_LONG" && test_set_prereq EXPENSIVE
test_expect_success EXPENSIVE 'create 50,000 tags in the repo' '
(
cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
- for i in `seq 50000`
+ for i in `test_seq 50000`
do
echo "commit refs/heads/too-many-refs"
echo "mark :$i"
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 80daaca..7d7424d 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -530,6 +530,20 @@ test_cmp() {
$GIT_TEST_CMP "$@"
}
+# test_seq is a portable replacement for seq(1).
+# It may be used like:
+#
+# for i in `test_seq 100`; do
+# echo $i
+# done
+
+test_seq () {
+ test $# = 1 ||
+ error "bug in the test script: not 1 parameter to test_seq"
+ last=$1
+ "$PERL_PATH" -le "print for 1..$last"
+}
+
# This function can be used to schedule some commands to be run
# unconditionally at the end of the test to restore sanity:
#
--
1.7.11.rc0.212.g37218b0.dirty
next prev parent reply other threads:[~2012-08-03 19:57 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-02 21:11 [PATCH] Fix 'No newline...' annotation in rewrite diffs Adam Butcher
2012-08-02 21:33 ` Jeff King
2012-08-02 21:52 ` Junio C Hamano
2012-08-02 22:14 ` Jeff King
2012-08-03 7:49 ` Michał Kiedrowicz
2012-08-03 16:02 ` Jeff King
2012-08-03 16:46 ` Junio C Hamano
2012-08-03 17:00 ` Jeff King
2012-08-03 19:57 ` Michał Kiedrowicz [this message]
2012-08-03 20:02 ` [PATCH] tests: Introduce test_seq Jeff King
2012-08-03 20:53 ` Junio C Hamano
2012-08-03 22:02 ` Jeff King
2012-08-03 22:09 ` Michał Kiedrowicz
2012-08-04 16:38 ` Johannes Sixt
2012-08-04 23:05 ` Junio C Hamano
2012-08-06 17:52 ` Michał Kiedrowicz
2012-08-06 20:16 ` Jeff King
2012-08-03 22:21 ` Michał Kiedrowicz
2012-08-03 22:48 ` Junio C Hamano
2012-08-03 23:08 ` Jeff King
2012-08-03 23:12 ` Junio C Hamano
2012-08-04 8:14 ` Michał Kiedrowicz
2012-08-04 22:10 ` Adam Butcher
2012-08-03 20:04 ` Michał Kiedrowicz
2012-08-03 20:07 ` Jeff King
2012-08-03 20:12 ` Michał Kiedrowicz
2012-08-03 20:38 ` Michał Kiedrowicz
2012-08-03 20:41 ` Jeff King
2012-08-02 22:22 ` [PATCH] Fix 'No newline...' annotation in rewrite diffs Adam Butcher
2012-08-02 22:00 ` Junio C Hamano
2012-08-02 22:58 ` Adam Butcher
2012-08-04 21:07 ` Adam Butcher
2012-08-05 1:26 ` Junio C Hamano
2012-08-05 7:06 ` [PATCH] Fix '\ No " Adam Butcher
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=1344023835-8947-1-git-send-email-michal.kiedrowicz@gmail.com \
--to=michal.kiedrowicz@gmail.com \
--cc=git@vger.kernel.org \
--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 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).