Re: [PATCH] tests: Introduce test_seq
- From
Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
- Date
- Aug 4, 2012, 08:14 UTC
- Message-ID
- <20120804101403.10ad79b5@gmail.com>
- In-Reply-To
- <7vfw83a7t5.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> Tentatively I'll queue this one on top, but I am tempted to squash > this in before merging the topic down. > > -- >8 -- > Subject: [PATCH] fixup! tests: Introduce test_seq > > Complex chains of && and || are harder to read when used as > replacement for if/else statements, but it is easy to rewrite it > with a case/esac in this case.
I just copied it from test_expect_success, but yeah, case/esac is clearer.
Show 39 quoted lines
>
> Avoid using unnecessary variables $first and $last.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> t/test-lib-functions.sh | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> index c8b4ae3..7dc70eb 100644
> --- a/t/test-lib-functions.sh
> +++ b/t/test-lib-functions.sh
> @@ -532,7 +532,7 @@ test_cmp() {
>
> # Print a sequence of numbers or letters in increasing order. This is
> # similar to GNU seq(1), but the latter might not be available
> -# everywhere. It may be used like:
> +# everywhere (and does not do letters). It may be used like:
> #
> # for i in `test_seq 100`; do
> # for j in `test_seq 10 20`; do
> @@ -543,11 +543,12 @@ test_cmp() {
> # done
>
> test_seq () {
> - test $# = 2 && { first=$1; shift; } || first=1
> - test $# = 1 ||
> - error "bug in the test script: not 1 or 2 parameters to test_seq"
> - last=$1
> - "$PERL_PATH" -le 'print for "$ARGV[0]".."$ARGV[1]"' "$first" "$last"
> + case $# in
> + 1) set 1 "$@" ;;
> + 2) ;;
> + *) error "bug in the test script: not 1 or 2 parameters to test_seq" ;;
> + esac
> + "$PERL_PATH" -le 'print for $ARGV[0]..$ARGV[1]' "$@"
> }
>
> # This function can be used to schedule some commands to be run