From: achluma <achluma@gmail.com>
*** BLURB HERE ***
achluma (1): t2400: avoid using pipes
t/t2400-worktree-add.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
base-commit: d0e8084c65cbf949038ae4cc344ac2c2efd77415
-- 2.41.0.windows.1
From: achluma <achluma@gmail.com>
*** BLURB HERE ***
achluma (1): t2400: avoid using pipes
t/t2400-worktree-add.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
base-commit: d0e8084c65cbf949038ae4cc344ac2c2efd77415
-- 2.41.0.windows.1
[PATCH 1/1] t2400: avoid using pipes
From: achluma <ach.lumap@gmail.com>
The exit code of the preceding command in a pipe is disregarded, so it's advisable to refrain from relying on it. Instead, by saving the output of a Git command to a file, we gain the ability to examine the exit codes of both commands separately.
Signed-off-by: achluma <ach.lumap@gmail.com> --- t/t2400-worktree-add.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh index df4aff7825..7ead05bb98 100755 --- a/t/t2400-worktree-add.sh +++ b/t/t2400-worktree-add.sh @@ -468,7 +468,8 @@ test_expect_success 'put a worktree under rebase' ' cd under-rebase && set_fake_editor && FAKE_LINES="edit 1" git rebase -i HEAD^ && - git worktree list | grep "under-rebase.*detached HEAD" + git worktree list >actual && + grep "under-rebase.*detached HEAD" actual ) ' @@ -509,7 +510,8 @@ test_expect_success 'checkout a branch under bisect' ' git bisect start && git bisect bad && git bisect good HEAD~2 && - git worktree list | grep "under-bisect.*detached HEAD" && + git worktree list >actual && + grep "under-bisect.*detached HEAD" actual && test_must_fail git worktree add new-bisect under-bisect && ! test -d new-bisect )
-- 2.41.0.windows.1
Re: [PATCH 1/1] t2400: avoid using pipes
On Tue, Oct 3, 2023 at 1:49 PM <ach.lumap@gmail.com> wrote:
> t2400: avoid using pipes
Pipes themselves are not necessarily problematic, and there are many places in the test suite where they are legitimately used. Rather...
> The exit code of the preceding command in a pipe is disregarded, > so it's advisable to refrain from relying on it. Instead, by > saving the output of a Git command to a file, we gain the > ability to examine the exit codes of both commands separately.
... as you correctly explain here, we don't want to lose the exit code from the Git command. Thus, if you want to convey more information to readers of `git log --oneline` (or other such commands), a better subject for the patch might be:
t2400: avoid losing Git exit code
That minor comment aside (which is probably not worth a reroll), the commit message properly explains why this change is desirable and the patch itself looks good.
> Signed-off-by: achluma <ach.lumap@gmail.com> > --- > diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh > @@ -468,7 +468,8 @@ test_expect_success 'put a worktree under rebase' ' > cd under-rebase && > set_fake_editor && > FAKE_LINES="edit 1" git rebase -i HEAD^ && > - git worktree list | grep "under-rebase.*detached HEAD" > + git worktree list >actual &&
Thanks for following the style guideline and omitting whitespace between the redirection operator and the destination file.
> + grep "under-rebase.*detached HEAD" actual > ) > ' > > @@ -509,7 +510,8 @@ test_expect_success 'checkout a branch under bisect' ' > git bisect start && > git bisect bad && > git bisect good HEAD~2 && > - git worktree list | grep "under-bisect.*detached HEAD" && > + git worktree list >actual && > + grep "under-bisect.*detached HEAD" actual && > test_must_fail git worktree add new-bisect under-bisect && > ! test -d new-bisect > )
Re: [PATCH 1/1] t2400: avoid using pipes
Eric Sunshine <sunshine@sunshineco.com> writes:
> On Tue, Oct 3, 2023 at 1:49 PM <ach.lumap@gmail.com> wrote: >> t2400: avoid using pipes > > Pipes themselves are not necessarily problematic, and there are many > places in the test suite where they are legitimately used. Rather... > ... > readers of `git log --oneline` (or other such commands), a better > subject for the patch might be: > > t2400: avoid losing Git exit code > > That minor comment aside (which is probably not worth a reroll), the > commit message properly explains why this change is desirable and the > patch itself looks good.
Thanks for writing and reviewing. Will queue.
[PATCH v2 0/1] *** Avoid using Pipes ***
*** BLURB HERE ***
Achu Luma (1): t2400: avoid using pipes
t/t2400-worktree-add.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
base-commit: d0e8084c65cbf949038ae4cc344ac2c2efd77415
-- 2.41.0.windows.1
[PATCH v2 1/1] t2400: avoid using pipes
The exit code of the preceding command in a pipe is disregarded, so it's advisable to refrain from relying on it. Instead, by saving the output of a Git command to a file, we gain the ability to examine the exit codes of both commands separately.
Signed-off-by: achluma <ach.lumap@gmail.com> --- t/t2400-worktree-add.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh index df4aff7825..7ead05bb98 100755 --- a/t/t2400-worktree-add.sh +++ b/t/t2400-worktree-add.sh @@ -468,7 +468,8 @@ test_expect_success 'put a worktree under rebase' ' cd under-rebase && set_fake_editor && FAKE_LINES="edit 1" git rebase -i HEAD^ && - git worktree list | grep "under-rebase.*detached HEAD" + git worktree list >actual && + grep "under-rebase.*detached HEAD" actual ) ' @@ -509,7 +510,8 @@ test_expect_success 'checkout a branch under bisect' ' git bisect start && git bisect bad && git bisect good HEAD~2 && - git worktree list | grep "under-bisect.*detached HEAD" && + git worktree list >actual && + grep "under-bisect.*detached HEAD" actual && test_must_fail git worktree add new-bisect under-bisect && ! test -d new-bisect )
-- 2.41.0.windows.1
Re: [PATCH v2 1/1] t2400: avoid using pipes
Hi Luma,
On Thu, Nov 30, 2023 at 6:37 PM Achu Luma <ach.lumap@gmail.com> wrote:
> > The exit code of the preceding command in a pipe is disregarded, > so it's advisable to refrain from relying on it. Instead, by > saving the output of a Git command to a file, we gain the > ability to examine the exit codes of both commands separately. > > Signed-off-by: achluma <ach.lumap@gmail.com>
I think the issue with merging your patch (in https://lore.kernel.org/git/xmqqedibzgi1.fsf@gitster.g/) was that this "Signed-off-by: ..." line didn't show your full real name and didn't match your name in your email address.
Assuming that "Achu Luma" is your full real name, you should replace "achluma" with "Achu Luma" in the "Signed-off-by: ..." line.
Also it's better not to send a cover letter patch like https://lore.kernel.org/git/20231130165429.2595-1-ach.lumap@gmail.com/ with no content for small patches like this.
When you resend, please also make sure to use [Outreachy] in the patch subject and to increment the version number of the patch, using for example "[PATCH v3]".
It would be nice too if after the line starting with --- below, you could describe in a few lines the changes in the new version of the patch compared to the previous version.
> ---
Here (after the line starting with --- above) is the place where you can tell what changed in the patch compared to the previous version.
Note that when there is a cover letter patch, it's better to talk about changes in the new version in the cover letter, but I dont think it's worth sending a cover letter patch.
Thanks, Christian.
> t/t2400-worktree-add.sh | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh > index df4aff7825..7ead05bb98 100755 > --- a/t/t2400-worktree-add.sh > +++ b/t/t2400-worktree-add.sh > @@ -468,7 +468,8 @@ test_expect_success 'put a worktree under rebase' ' > cd under-rebase && > set_fake_editor && > FAKE_LINES="edit 1" git rebase -i HEAD^ && > - git worktree list | grep "under-rebase.*detached HEAD" > + git worktree list >actual && > + grep "under-rebase.*detached HEAD" actual > ) > ' > > @@ -509,7 +510,8 @@ test_expect_success 'checkout a branch under bisect' ' > git bisect start && > git bisect bad && > git bisect good HEAD~2 && > - git worktree list | grep "under-bisect.*detached HEAD" && > + git worktree list >actual && > + grep "under-bisect.*detached HEAD" actual && > test_must_fail git worktree add new-bisect under-bisect && > ! test -d new-bisect > ) > -- > 2.41.0.windows.1 > >
[Outreachy][PATCH v3] t2400: avoid using pipes
The exit code of the preceding command in a pipe is disregarded, so it's advisable to refrain from relying on it. Instead, by saving the output of a Git command to a file, we gain the ability to examine the exit codes of both commands separately.
Signed-off-by: Achu Luma <ach.lumap@gmail.com> --- Since v2 I don't send a cover letter anymore, and I changed my "Signed-of-by: ..." line so that it contains my full real name and I added "Outreachy" to the subject.
t/t2400-worktree-add.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh index df4aff7825..7ead05bb98 100755 --- a/t/t2400-worktree-add.sh +++ b/t/t2400-worktree-add.sh @@ -468,7 +468,8 @@ test_expect_success 'put a worktree under rebase' ' cd under-rebase && set_fake_editor && FAKE_LINES="edit 1" git rebase -i HEAD^ && - git worktree list | grep "under-rebase.*detached HEAD" + git worktree list >actual && + grep "under-rebase.*detached HEAD" actual ) ' @@ -509,7 +510,8 @@ test_expect_success 'checkout a branch under bisect' ' git bisect start && git bisect bad && git bisect good HEAD~2 && - git worktree list | grep "under-bisect.*detached HEAD" && + git worktree list >actual && + grep "under-bisect.*detached HEAD" actual && test_must_fail git worktree add new-bisect under-bisect && ! test -d new-bisect )
-- 2.41.0.windows.1
Re: [Outreachy][PATCH v3] t2400: avoid using pipes
Achu Luma <ach.lumap@gmail.com> writes:
> Subject: Re: [Outreachy][PATCH v3] t2400: avoid using pipes
"avoid using pipes" is a means to an end. And it is more important to tell readers what that "end" is. With this patch, what are we trying to achieve? Cater to platforms that lack pipes? Help platforms that cannot run two processes at the same time, so let one run and store the result in a file, and then let the other one run, to reduce the CPU load?
If we run a "git" command, especially a command we are testing, on the upstream side of a pipe, we lose information. We cannot tell what exit status the command exited with. That is what we care about.
So, it is better to say that in the title, e.g.,
Subject: [PATCH] t2400: avoid losing exit status to pipes
> The exit code of the preceding command in a pipe is disregarded, > so it's advisable to refrain from relying on it.
It is unclear what "it" refers to here. We cannot rely on the exit code of the command on the upstream side of a pipe, obviously.
> Instead, by > saving the output of a Git command to a file, we gain the > ability to examine the exit codes of both commands separately.
Surely. I personally think that the title that says what the purpose of the patch is clearly should be sufficient without any further description in the body, though.
> > Signed-off-by: Achu Luma <ach.lumap@gmail.com> > --- > Since v2 I don't send a cover letter anymore, and I changed > my "Signed-of-by: ..." line so that it > contains my full real name and I added "Outreachy" to the subject.
Nicely done.
> > t/t2400-worktree-add.sh | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh > index df4aff7825..7ead05bb98 100755 > --- a/t/t2400-worktree-add.sh > +++ b/t/t2400-worktree-add.sh > @@ -468,7 +468,8 @@ test_expect_success 'put a worktree under rebase' ' > cd under-rebase && > set_fake_editor && > FAKE_LINES="edit 1" git rebase -i HEAD^ && > - git worktree list | grep "under-rebase.*detached HEAD" > + git worktree list >actual && > + grep "under-rebase.*detached HEAD" actual > ) > ' > > @@ -509,7 +510,8 @@ test_expect_success 'checkout a branch under bisect' ' > git bisect start && > git bisect bad && > git bisect good HEAD~2 && > - git worktree list | grep "under-bisect.*detached HEAD" && > + git worktree list >actual && > + grep "under-bisect.*detached HEAD" actual && > test_must_fail git worktree add new-bisect under-bisect && > ! test -d new-bisect > )
[Outreachy][PATCH v4] t2400: avoid losing exit status to pipes
The exit code of the preceding command in a pipe is disregarded. So if that preceding command is a Git command that fails, the test would not fail. Instead, by saving the output of that Git command to a file, and removing the pipe, we make sure the test will fail if that Git command fails.
Signed-off-by: Achu Luma <ach.lumap@gmail.com> --- The difference between v3 and v4 is: - Changed subject to better reflect what the patch is doing. - Updated the commit message.
t/t2400-worktree-add.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh index 3742971105..b597004adb 100755 --- a/t/t2400-worktree-add.sh +++ b/t/t2400-worktree-add.sh @@ -490,7 +490,8 @@ test_expect_success 'put a worktree under rebase' ' cd under-rebase && set_fake_editor && FAKE_LINES="edit 1" git rebase -i HEAD^ && - git worktree list | grep "under-rebase.*detached HEAD" + git worktree list >actual && + grep "under-rebase.*detached HEAD" actual ) ' @@ -531,7 +532,8 @@ test_expect_success 'checkout a branch under bisect' ' git bisect start && git bisect bad && git bisect good HEAD~2 && - git worktree list | grep "under-bisect.*detached HEAD" && + git worktree list >actual && + grep "under-bisect.*detached HEAD" actual && test_must_fail git worktree add new-bisect under-bisect && ! test -d new-bisect ) -- 2.43.0.windows.1