From: Junio C Hamano <gitster@pobox.com>
To: <rsbecker@nexbridge.com>
Cc: <git@vger.kernel.org>
Subject: Re: [Test Breakage 2.46.0-rc0] Test t0021.35 fails on NonStop
Date: Sat, 13 Jul 2024 19:53:43 -0700 [thread overview]
Message-ID: <xmqq8qy4adl4.fsf@gitster.g> (raw)
In-Reply-To: <024101dad543$221b4ab0$6651e010$@nexbridge.com> (rsbecker@nexbridge.com's message of "Sat, 13 Jul 2024 12:38:41 -0400")
<rsbecker@nexbridge.com> writes:
> ok 34 # skip delayed checkout shows progress by default on tty (pathspec
> checkout) (missing TTY of PERL,TTY)
>
> expecting success of 0021.35 'delayed checkout ommits progress on non-tty
> (pathspec checkout)':
> test_delayed_checkout_progress ! git checkout $opt
>
> + test_delayed_checkout_progress ! git checkout .
> test_delayed_checkout_progress: test: argument expected
This "test: argument expected" is curious.
The shell function reads like so and it hasn't changed since
7a132c62 (checkout: make delayed checkout respect --quiet and
--no-progress, 2021-08-26) introduced it, and there are 3 uses of
"test" builtin function.
test_delayed_checkout_progress () {
if test "$1" = "!"
then
local expect_progress=N &&
shift
else
local expect_progress=
fi &&
if test $# -lt 1
then
BUG "no command given to test_delayed_checkout_progress"
fi &&
(
cd progress &&
GIT_PROGRESS_DELAY=0 &&
export GIT_PROGRESS_DELAY &&
rm -f *.a delay-progress.log &&
"$@" 2>err &&
grep "IN: smudge test-delay10.a .* \\[DELAYED\\]" delay-progress.log &&
if test "$expect_progress" = N
then
! grep "Filtering content" err
else
grep "Filtering content" err
fi
)
}
I do not see how any of these tests can be fed a list of zero or
more argument that causes it to barf with "argument expected",
when
test_delayed_checkout_progress ! git checkout .
is run. The first "are we negated?" test gets
test "!" = "!"
and shifts that "!" away, the second test that checks the number of
arguments do not need any extra quoting (in other words, $# can never
be an empty string, so
test $# -lt 1
cannot become "test -lt 1" that would barf, like so:
$ ksh -c 'test -lt 1'
ksh: test: argument expected
And whether expect_progress gets an empty string or N (we should
have got N in there, if the shell is so broken that the first
comparison between "!" and "!" were botched and the variable got
assigned an empty string, or "local" were botched and the variable
were somehow left uninitialized, expect_progress could be a value
we do not expect), the last test to switch between !grep and grep
can never break like so:
$ ksh -c 'test = N'
ksh: test: argument expected
because $expect_progress is inside a pair of double quotes.
In the above "thinking out aloud", I invoked ksh because bash and
dash gives different error messages.
Another remotely curious thing is that I am not sure how "local" in
the outer shell influences the use of the variable in the subshell
(read: now I am speculating if the above code uses some constructs
that are so tricky to implement correctly and an unfortunate bug
gets triggered in your shell), but even if such a bug caused a
nonsense value to be assigned to $expect_progress, I do not see how
it can cause "test" to barf with "argument expected".
So, I am not sure what is going on at all.
In any case, this does not sound anything recent. Do you know that
this used to work in previous releases? Could this be caused by
changes in your environment (like which shell is used)?
next prev parent reply other threads:[~2024-07-14 2:53 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-13 16:38 [Test Breakage 2.46.0-rc0] Test t0021.35 fails on NonStop rsbecker
2024-07-14 2:53 ` Junio C Hamano [this message]
2024-07-14 13:29 ` rsbecker
2024-07-14 17:00 ` Junio C Hamano
2024-07-14 17:29 ` rsbecker
2024-07-14 18:15 ` brian m. carlson
2024-07-14 18:28 ` rsbecker
2024-07-14 22:01 ` brian m. carlson
2024-07-14 22:14 ` rsbecker
2024-07-15 15:20 ` Junio C Hamano
2024-07-15 15:32 ` rsbecker
2024-07-15 16:41 ` Junio C Hamano
2024-07-15 17:39 ` rsbecker
2024-07-15 18:33 ` Junio C Hamano
2024-07-15 19:03 ` rsbecker
2024-07-15 15:05 ` Junio C Hamano
2024-07-14 21:27 ` Eric Sunshine
2024-07-14 13:58 ` rsbecker
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=xmqq8qy4adl4.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=rsbecker@nexbridge.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.
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).