git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Elijah Newren <newren@gmail.com>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: Git Mailing List <git@vger.kernel.org>, Jeff King <peff@peff.net>,
	Eric Sunshine <ericsunshine@gmail.com>
Subject: Re: [PATCH 15/19] tests: simplify by dropping unnecessary `for` loops
Date: Thu, 9 Dec 2021 08:50:31 -0800	[thread overview]
Message-ID: <CABPp-BGrjPKJAp_-yOH37d84Y0LhGwTOSboOm9xFYXp+68BrWw@mail.gmail.com> (raw)
In-Reply-To: <20211209051115.52629-16-sunshine@sunshineco.com>

On Wed, Dec 8, 2021 at 11:39 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
>
> Rather than manually looping over a set of items and plugging those
> items into a template string which is printed repeatedly, achieve the
> same effect by taking advantage of `printf` which loops over its
> arguments automatically.

I didn't know this about printf; handy.

Patch looks good.

>
> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
> ---
>  t/t3005-ls-files-relative.sh      | 10 ++--------
>  t/t3600-rm.sh                     |  5 +----
>  t/t4025-hunk-header.sh            | 10 ++--------
>  t/t4125-apply-ws-fuzz.sh          |  5 +----
>  t/t6416-recursive-corner-cases.sh | 30 ++++++------------------------
>  t/t7110-reset-merge.sh            |  2 +-
>  t/t9400-git-cvsserver-server.sh   |  2 +-
>  7 files changed, 14 insertions(+), 50 deletions(-)
>
> diff --git a/t/t3005-ls-files-relative.sh b/t/t3005-ls-files-relative.sh
> index 6ba8b589cd..fbfa210a50 100755
> --- a/t/t3005-ls-files-relative.sh
> +++ b/t/t3005-ls-files-relative.sh
> @@ -39,10 +39,7 @@ test_expect_success 'ls-files with mixed levels' '
>  test_expect_success 'ls-files -c' '
>         (
>                 cd top/sub &&
> -               for f in ../y*
> -               do
> -                       echo "error: pathspec $SQ$f$SQ did not match any file(s) known to git"
> -               done >expect.err &&
> +               printf "error: pathspec $SQ%s$SQ did not match any file(s) known to git\n" ../y* >expect.err &&
>                 echo "Did you forget to ${SQ}git add${SQ}?" >>expect.err &&
>                 ls ../x* >expect.out &&
>                 test_must_fail git ls-files -c --error-unmatch ../[xy]* >actual.out 2>actual.err &&
> @@ -54,10 +51,7 @@ test_expect_success 'ls-files -c' '
>  test_expect_success 'ls-files -o' '
>         (
>                 cd top/sub &&
> -               for f in ../x*
> -               do
> -                       echo "error: pathspec $SQ$f$SQ did not match any file(s) known to git"
> -               done >expect.err &&
> +               printf "error: pathspec $SQ%s$SQ did not match any file(s) known to git\n" ../x* >expect.err &&
>                 echo "Did you forget to ${SQ}git add${SQ}?" >>expect.err &&
>                 ls ../y* >expect.out &&
>                 test_must_fail git ls-files -o --error-unmatch ../[xy]* >actual.out 2>actual.err &&
> diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
> index ed3952eb98..e74a318ac3 100755
> --- a/t/t3600-rm.sh
> +++ b/t/t3600-rm.sh
> @@ -274,10 +274,7 @@ test_expect_success 'Resolving by removal is not a warning-worthy event' '
>         git reset -q --hard &&
>         test_when_finished "rm -f .git/index.lock msg && git reset -q --hard" &&
>         blob=$(echo blob | git hash-object -w --stdin) &&
> -       for stage in 1 2 3
> -       do
> -               echo "100644 $blob $stage       blob"
> -       done | git update-index --index-info &&
> +       printf "100644 $blob %d\tblob\n" 1 2 3 | git update-index --index-info &&
>         git rm blob >msg 2>&1 &&
>         test_i18ngrep ! "needs merge" msg &&
>         test_must_fail git ls-files -s --error-unmatch blob
> diff --git a/t/t4025-hunk-header.sh b/t/t4025-hunk-header.sh
> index 6356961de4..5397cb7d42 100755
> --- a/t/t4025-hunk-header.sh
> +++ b/t/t4025-hunk-header.sh
> @@ -14,15 +14,9 @@ test_expect_success setup '
>
>         (
>                 echo "A $NS" &&
> -               for c in B C D E F G H I J K
> -               do
> -                       echo "  $c"
> -               done &&
> +               printf "  %s\n" B C D E F G H I J K &&
>                 echo "L  $NS" &&
> -               for c in M N O P Q R S T U V
> -               do
> -                       echo "  $c"
> -               done
> +               printf "  %s\n" M N O P Q R S T U V
>         ) >file &&
>         git add file &&
>
> diff --git a/t/t4125-apply-ws-fuzz.sh b/t/t4125-apply-ws-fuzz.sh
> index 9671de7999..090987c89b 100755
> --- a/t/t4125-apply-ws-fuzz.sh
> +++ b/t/t4125-apply-ws-fuzz.sh
> @@ -10,10 +10,7 @@ test_expect_success setup '
>         git add file &&
>
>         # file-0 is full of whitespace breakages
> -       for l in a bb c d eeee f ggg h
> -       do
> -               echo "$l "
> -       done >file-0 &&
> +       printf "%s \n" a bb c d eeee f ggg h >file-0 &&
>
>         # patch-0 creates a whitespace broken file
>         cat file-0 >file &&
> diff --git a/t/t6416-recursive-corner-cases.sh b/t/t6416-recursive-corner-cases.sh
> index 84f5082366..690c8482b1 100755
> --- a/t/t6416-recursive-corner-cases.sh
> +++ b/t/t6416-recursive-corner-cases.sh
> @@ -24,14 +24,8 @@ test_expect_success 'setup basic criss-cross + rename with no modifications' '
>                 cd basic-rename &&
>
>                 ten="0 1 2 3 4 5 6 7 8 9" &&
> -               for i in $ten
> -               do
> -                       echo line $i in a sample file
> -               done >one &&
> -               for i in $ten
> -               do
> -                       echo line $i in another sample file
> -               done >two &&
> +               printf "line %d in a sample file\n" $ten >one &&
> +               printf "line %d in another sample file\n" $ten >two &&
>                 git add one two &&
>                 test_tick && git commit -m initial &&
>
> @@ -96,14 +90,8 @@ test_expect_success 'setup criss-cross + rename merges with basic modification'
>                 cd rename-modify &&
>
>                 ten="0 1 2 3 4 5 6 7 8 9" &&
> -               for i in $ten
> -               do
> -                       echo line $i in a sample file
> -               done >one &&
> -               for i in $ten
> -               do
> -                       echo line $i in another sample file
> -               done >two &&
> +               printf "line %d in a sample file\n" $ten >one &&
> +               printf "line %d in another sample file\n" $ten >two &&
>                 git add one two &&
>                 test_tick && git commit -m initial &&
>
> @@ -1588,10 +1576,7 @@ test_expect_success 'setup nested conflicts' '
>                 cd nested_conflicts &&
>
>                 # Create some related files now
> -               for i in $(test_seq 1 10)
> -               do
> -                       echo Random base content line $i
> -               done >initial &&
> +               printf "Random base content line %d\n" $(test_seq 1 10) >initial &&
>
>                 cp initial b_L1 &&
>                 cp initial b_R1 &&
> @@ -1777,10 +1762,7 @@ test_expect_success 'setup virtual merge base with nested conflicts' '
>                 cd virtual_merge_base_has_nested_conflicts &&
>
>                 # Create some related files now
> -               for i in $(test_seq 1 10)
> -               do
> -                       echo Random base content line $i
> -               done >content &&
> +               printf "Random base content line %d\n" $(test_seq 1 10) >content &&
>
>                 # Setup original commit
>                 git add content &&
> diff --git a/t/t7110-reset-merge.sh b/t/t7110-reset-merge.sh
> index a82a07a04a..3d62e10b53 100755
> --- a/t/t7110-reset-merge.sh
> +++ b/t/t7110-reset-merge.sh
> @@ -8,7 +8,7 @@ test_description='Tests for "git reset" with "--merge" and "--keep" options'
>  . ./test-lib.sh
>
>  test_expect_success setup '
> -    for i in 1 2 3; do echo line $i; done >file1 &&
> +    printf "line %d\n" 1 2 3 >file1 &&
>      cat file1 >file2 &&
>      git add file1 file2 &&
>      test_tick &&
> diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh
> index a6a73effde..a60fe2e19f 100755
> --- a/t/t9400-git-cvsserver-server.sh
> +++ b/t/t9400-git-cvsserver-server.sh
> @@ -591,7 +591,7 @@ test_expect_success 'cvs annotate' '
>      cd cvswork &&
>      GIT_CONFIG="$git_config" cvs annotate merge >../out &&
>      sed -e "s/ .*//" ../out >../actual &&
> -    for i in 3 1 1 1 1 1 1 1 2 4; do echo 1.$i; done >../expect &&
> +    printf "1.%d\n" 3 1 1 1 1 1 1 1 2 4 >../expect &&
>      test_cmp ../expect ../actual
>  '
>
> --
> 2.34.1.307.g9b7440fafd
>

  reply	other threads:[~2021-12-09 16:53 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-09  5:10 [PATCH 00/19] tests: fix broken &&-chains & abort loops on error Eric Sunshine
2021-12-09  5:10 ` [PATCH 01/19] t/lib-pager: use sane_unset() to avoid breaking &&-chain Eric Sunshine
2021-12-09  5:10 ` [PATCH 02/19] t1010: fix unnoticed failure on Windows Eric Sunshine
2021-12-09 16:27   ` Elijah Newren
2021-12-09 16:45     ` Eric Sunshine
2021-12-09  5:10 ` [PATCH 03/19] t1020: avoid aborting entire test script when one test fails Eric Sunshine
2021-12-09  5:11 ` [PATCH 04/19] t4202: clarify intent by creating expected content less cleverly Eric Sunshine
2021-12-10  9:09   ` Jeff King
2021-12-09  5:11 ` [PATCH 05/19] t5516: drop unnecessary subshell and command invocation Eric Sunshine
2021-12-10  9:10   ` Jeff King
2021-12-09  5:11 ` [PATCH 06/19] t6300: make `%(raw:size) --shell` test more robust Eric Sunshine
2021-12-10  9:14   ` Jeff King
2021-12-09  5:11 ` [PATCH 07/19] t9107: use shell parameter expansion to avoid breaking &&-chain Eric Sunshine
2021-12-09  5:11 ` [PATCH 08/19] tests: simplify construction of large blocks of text Eric Sunshine
2021-12-09  5:11 ` [PATCH 09/19] tests: use test_write_lines() to generate line-oriented output Eric Sunshine
2021-12-10  9:22   ` Jeff King
2021-12-11  6:59     ` Eric Sunshine
2021-12-09  5:11 ` [PATCH 10/19] tests: fix broken &&-chains in compound statements Eric Sunshine
2021-12-09  5:11 ` [PATCH 11/19] tests: fix broken &&-chains in `$(...)` command substitutions Eric Sunshine
2021-12-09 16:44   ` Elijah Newren
2021-12-09 16:53     ` Eric Sunshine
2021-12-09 16:57       ` Elijah Newren
2021-12-10  9:27       ` Jeff King
2021-12-09  5:11 ` [PATCH 12/19] tests: fix broken &&-chains in `{...}` groups Eric Sunshine
2021-12-10  9:29   ` Jeff King
2021-12-11  7:14     ` Eric Sunshine
2021-12-10  9:38   ` Fabian Stelzer
2021-12-11  7:32     ` Eric Sunshine
2021-12-09  5:11 ` [PATCH 13/19] tests: apply modern idiom for signaling test failure Eric Sunshine
2021-12-10  9:32   ` Jeff King
2021-12-11  7:47     ` Eric Sunshine
2021-12-09  5:11 ` [PATCH 14/19] tests: apply modern idiom for exiting loop upon failure Eric Sunshine
2021-12-10  9:36   ` Jeff King
2021-12-09  5:11 ` [PATCH 15/19] tests: simplify by dropping unnecessary `for` loops Eric Sunshine
2021-12-09 16:50   ` Elijah Newren [this message]
2021-12-09  5:11 ` [PATCH 16/19] t0000-t3999: detect and signal failure within loop Eric Sunshine
2021-12-09  5:11 ` [PATCH 17/19] t4000-t4999: " Eric Sunshine
2021-12-10  9:53   ` Fabian Stelzer
2021-12-11  8:06     ` Eric Sunshine
2021-12-09  5:11 ` [PATCH 18/19] t5000-t5999: " Eric Sunshine
2021-12-09  5:11 ` [PATCH 19/19] t6000-t9999: " Eric Sunshine
2021-12-09 17:02 ` [PATCH 00/19] tests: fix broken &&-chains & abort loops on error Elijah Newren
2021-12-09 19:17   ` Eric Sunshine
2021-12-10  9:38     ` Jeff King
2021-12-10  9:57       ` Fabian Stelzer
2021-12-11  8:16         ` Eric Sunshine
2021-12-11  9:58 ` [PATCH v1.1 2/19] t1010: fix unnoticed failure on Windows Eric Sunshine

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=CABPp-BGrjPKJAp_-yOH37d84Y0LhGwTOSboOm9xFYXp+68BrWw@mail.gmail.com \
    --to=newren@gmail.com \
    --cc=ericsunshine@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    --cc=sunshine@sunshineco.com \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).