From: Junio C Hamano <gitster@pobox.com>
To: "René Scharfe" <l.s.r@web.de>
Cc: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Git List" <git@vger.kernel.org>,
"Matheus Tavares" <matheus.bernardino@usp.br>
Subject: Re: [PATCH v2] parallel-checkout: avoid dash local bug in tests
Date: Sun, 06 Jun 2021 10:28:41 +0900 [thread overview]
Message-ID: <xmqqa6o3233q.fsf@gitster.g> (raw)
In-Reply-To: <5ed77a50-3b34-4f3d-8348-a11d3930872b@web.de> ("René Scharfe"'s message of "Sun, 6 Jun 2021 03:01:38 +0200")
René Scharfe <l.s.r@web.de> writes:
> Am 05.06.21 um 21:56 schrieb Ævar Arnfjörð Bjarmason:
>>
>> On Sat, Jun 05 2021, René Scharfe wrote:
>>
>>> - local workers=$(grep "child_start\[..*\] git checkout--worker" "$trace_file" | wc -l) &&
>>> - test $workers -eq $expected_workers &&
>>> + test $(grep -c "child_start\[..*\] git checkout--worker" "$trace_file") -eq $expected_workers &&
>>> rm "$trace_file"
>>> } 8>&2 2>&4
>>
>> I'd find this thing much clearer if the v2 just narrowly focused on
>> avoiding the "local", and thus demonstrated the non-portable shell
>> issue,
>
> I was not aiming for a minimal fix and I don't think the patch above is
> too complex, but you're right that at this point in the release cycle a
> duct-tape-style patch would be better.
Sorry for being late to the party but I tend to disagree. "grep -c"
is used elsewhere in the tests, we know it is safe.
IOW, the above change is quite straight-forward. It is much more
obvious and close to "duct-tape-style" fix, than some altermatives
like enclosing the whole command substitution in a pair of
double-quotes and rely on $workers always getting used without
double-quotes around it. To me, that looks more subtle and brittle.
>> and perhaps with something like:
>>
>> diff --git a/t/check-non-portable-shell.pl b/t/check-non-portable-shell.pl
>> index fd3303552be..aad6f3e2bf1 100755
>> --- a/t/check-non-portable-shell.pl
>> +++ b/t/check-non-portable-shell.pl
>> @@ -48,6 +48,7 @@ sub err {
>> /\bexport\s+[A-Za-z0-9_]*=/ and err '"export FOO=bar" is not portable (use FOO=bar && export FOO)';
>> /^\s*([A-Z0-9_]+=(\w*|(["']).*?\3)\s+)+(\w+)/ and exists($func{$4}) and
>> err '"FOO=bar shell_func" assignment extends beyond "shell_func"';
>> + /\blocal\b \S+=\$\(.*?\|\s*\bwc -l\)/ and err 'whitespace handling in local=$(... | wc -l) differs in some dash versions';
>
> Any command can output whitespace, it's not limited to wc -l. So a
> better rule might be to always quote command substitutions in local
> variable declarations (local foo="$(...)"). Or to disallow assignments
> with local altogether, like we already do for export, but that might be
> a bit much.
I actually do not mind "no assignments with local decl" that much.
I agree that is outside the scope of this particular fix.
next prev parent reply other threads:[~2021-06-06 1:28 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-05 12:27 [PATCH] parallel-checkout: use grep -c to count workers in tests René Scharfe
2021-06-05 14:31 ` Matheus Tavares Bernardino
2021-06-05 15:20 ` René Scharfe
2021-06-05 15:30 ` René Scharfe
2021-06-05 18:11 ` [PATCH v2] parallel-checkout: avoid dash local bug " René Scharfe
2021-06-05 19:09 ` SZEDER Gábor
2021-06-06 1:01 ` René Scharfe
2021-06-05 19:56 ` Ævar Arnfjörð Bjarmason
2021-06-05 22:17 ` Matheus Tavares Bernardino
2021-06-05 22:21 ` Matheus Tavares Bernardino
2021-06-06 1:01 ` René Scharfe
2021-06-06 1:28 ` Junio C Hamano [this message]
2021-06-06 1:01 ` [PATCH v3] " René Scharfe
2021-06-06 1:41 ` Junio C Hamano
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=xmqqa6o3233q.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=l.s.r@web.de \
--cc=matheus.bernardino@usp.br \
/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.