From: Patrick Steinhardt <ps@pks.im>
To: Eric Sunshine <sunshine@sunshineco.com>
Cc: git@vger.kernel.org, Han-Wen Nienhuys <hanwenn@gmail.com>,
Josh Steadmon <steadmon@google.com>,
Luca Milanesio <luca.milanesio@gmail.com>,
JGit Developers list <jgit-dev@eclipse.org>
Subject: Re: [PATCH 11/12] t0610: fix non-portable variable assignment
Date: Fri, 5 Apr 2024 11:40:38 +0200 [thread overview]
Message-ID: <Zg_HFtiami4j5th7@ncase> (raw)
In-Reply-To: <CAPig+cSb_cKXYaNCBpe9Uy_iGB_K2NXaw4d1hg5bPuVaCEWvjA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2813 bytes --]
On Fri, Apr 05, 2024 at 05:14:34AM -0400, Eric Sunshine wrote:
> On Fri, Apr 5, 2024 at 3:51 AM Patrick Steinhardt <ps@pks.im> wrote:
> > In `test_expect_perms()` we assign the output of a command to a variable
> > declared via `local`. To assert that the command is actually successful
> > we also chain it with `&&`. This construct is seemingly not portable and
> > may fail with "local: 1: bad variable name".
> >
> > Split up the variable declaration and assignment to fix this.
>
> Under what configuration, circumstances, conditions did you encounter
> this problem? I ask because this isn't the only such case in the test
> suite, as shown by:
>
> git grep -nP 'local ..*=\$\(..*&&' -- t
>
> What makes this case distinct from the others? Including such
> information would improve the commit message and help future readers.
I only ever saw this in some subset of GitHub CI jobs. See e.g. [1],
where the logs [2] show the following error:
```
ok 6 - init: reinitializing reftable with files backend fails
+ test_when_finished rm -rf repo
+ test 0 = 0
+ test_cleanup={ rm -rf repo
} && (exit "$eval_ret"); eval_ret=$?; :
+ umask 002
+ git init --shared=true repo
Initialized empty shared Git repository in /home/runner/work/git/git/t/trash directory.t0610-reftable-basics/repo/.git/
+ git -C repo config core.sharedrepository
+ test 1 = 1
+ test_expect_perms -rw-rw-r-- repo/.git/reftable/tables.list
+ local perms=-rw-rw-r--
+ local file=repo/.git/reftable/tables.list
+ ls -l repo/.git/reftable/tables.list
+ local actual=-rw-rw-r-- 1 runner docker 43 Apr 4 11:55 repo/.git/reftable/tables.list
t0610-reftable-basics.sh: 83: local: 1: bad variable name
+ die
+ code=2
+ test_atexit_handler
+ test : != :
+ return 0
+ test -n
+ echo FATAL: Unexpected exit with code 2
FATAL: Unexpected exit with code 2
```
I was a bit surprised by this, too, and cannot reproduce it with any of
my systems. But I would bet this is dependent on the actual version of
your shell because it only happened with the Ubuntu 20.04 and 16.04
jobs.
I didn't dig much deeper though as the fix is easy enough, even though
it is surprising.
[1]: https://github.com/git/git/actions/runs/8554157462/job/23438877643
[2]: https://github.com/git/git/actions/runs/8554157462/artifacts/1384620962
Patrick
> > Signed-off-by: Patrick Steinhardt <ps@pks.im>
> > ---
> > diff --git a/t/t0610-reftable-basics.sh b/t/t0610-reftable-basics.sh
> > @@ -80,8 +80,9 @@ test_expect_success 'init: reinitializing reftable with files backend fails' '
> > test_expect_perms () {
> > local perms="$1"
> > local file="$2"
> > - local actual=$(ls -l "$file") &&
> > + local actual
> >
> > + actual=$(ls -l "$file") &&
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2024-04-05 9:40 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-04 13:25 [PATCH 00/12] t: exercise Git/JGit reftable compatibility Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 01/12] ci: rename "runs_on_pool" to "distro" Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 02/12] ci: expose distro name in dockerized GitHub jobs Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 03/12] ci: allow skipping sudo on dockerized jobs Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 04/12] ci: drop duplicate package installation for "linux-gcc-default" Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 05/12] ci: convert "install-dependencies.sh" to use "/bin/sh" Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 06/12] ci: merge custom PATH directories Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 07/12] ci: merge scripts which install dependencies Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 08/12] ci: make Perforce binaries executable for all users Patrick Steinhardt
2024-04-05 20:01 ` Josh Steadmon
2024-04-08 5:48 ` Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 09/12] ci: install JGit dependency Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 10/12] t06xx: always execute backend-specific tests Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 11/12] t0610: fix non-portable variable assignment Patrick Steinhardt
2024-04-05 9:14 ` Eric Sunshine
2024-04-05 9:40 ` Patrick Steinhardt [this message]
2024-04-05 16:02 ` Junio C Hamano
2024-04-05 16:12 ` [PATCH] CodingGuidelines: quote assigned value with "local" and "export" Junio C Hamano
2024-04-05 16:21 ` Junio C Hamano
2024-04-05 17:48 ` Jeff King
2024-04-05 19:36 ` Junio C Hamano
2024-04-05 23:15 ` Junio C Hamano
2024-04-07 1:23 ` Jeff King
2024-04-05 16:44 ` [PATCH 11/12] t0610: fix non-portable variable assignment Patrick Steinhardt
2024-04-04 13:25 ` [PATCH 12/12] t0612: add tests to exercise Git/JGit reftable compatibility Patrick Steinhardt
2024-04-04 21:40 ` Han-Wen Nienhuys
2024-04-05 9:41 ` Patrick Steinhardt
2024-04-06 13:03 ` Han-Wen Nienhuys
2024-04-06 15:53 ` Patrick Steinhardt
2024-04-08 5:24 ` Patrick Steinhardt
2024-04-04 13:37 ` [PATCH 00/12] t: " Patrick Steinhardt
2024-04-08 6:45 ` [PATCH v2 " Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 02/12] ci: expose distro name in dockerized GitHub jobs Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 03/12] ci: allow skipping sudo on dockerized jobs Patrick Steinhardt
2024-04-10 16:53 ` Toon claes
2024-04-10 17:21 ` Junio C Hamano
2024-04-11 8:55 ` Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 04/12] ci: drop duplicate package installation for "linux-gcc-default" Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 05/12] ci: convert "install-dependencies.sh" to use "/bin/sh" Patrick Steinhardt
2024-04-10 20:46 ` Justin Tobler
2024-04-11 8:55 ` Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 06/12] ci: merge custom PATH directories Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 07/12] ci: merge scripts which install dependencies Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 08/12] ci: make Perforce binaries executable for all users Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 09/12] ci: install JGit dependency Patrick Steinhardt
2024-04-08 6:46 ` [PATCH v2 10/12] t06xx: always execute backend-specific tests Patrick Steinhardt
2024-04-08 6:47 ` [PATCH v2 11/12] t0610: fix non-portable variable assignment Patrick Steinhardt
2024-04-08 6:57 ` Eric Sunshine
2024-04-08 8:56 ` Patrick Steinhardt
2024-04-08 6:47 ` [PATCH v2 12/12] t0612: add tests to exercise Git/JGit reftable compatibility Patrick Steinhardt
2024-04-08 7:10 ` Eric Sunshine
2024-04-08 16:07 ` Junio C Hamano
2024-04-08 16:19 ` Eric Sunshine
2024-04-08 16:29 ` Eric Sunshine
2024-04-08 16:22 ` Patrick Steinhardt
2024-04-08 17:26 ` Jeff King
2024-04-08 21:52 ` Junio C Hamano
2024-04-08 21:51 ` Junio C Hamano
2024-04-10 20:43 ` Justin Tobler
2024-04-11 8:55 ` Patrick Steinhardt
2024-04-08 6:47 ` [PATCH v2 01/12] ci: rename "runs_on_pool" to "distro" Patrick Steinhardt
2024-04-09 2:17 ` [PATCH v2 00/12] t: exercise Git/JGit reftable compatibility Junio C Hamano
2024-04-09 3:43 ` Patrick Steinhardt
2024-04-09 5:34 ` Junio C Hamano
2024-04-09 6:07 ` Patrick Steinhardt
2024-04-09 9:57 ` [PATCH 0/2] t0610: fix umask tests Patrick Steinhardt
2024-04-09 9:57 ` [PATCH 1/2] t0610: make `--shared=` tests reusable Patrick Steinhardt
2024-04-09 9:57 ` [PATCH 2/2] t0610: execute git-pack-refs(1) with specified umask Patrick Steinhardt
2024-04-10 21:49 ` [PATCH 0/2] t0610: fix umask tests Justin Tobler
2024-04-11 9:09 ` [PATCH v3 00/13] t: exercise Git/JGit reftable compatibility Patrick Steinhardt
2024-04-11 9:09 ` [PATCH v3 01/13] ci: rename "runs_on_pool" to "distro" Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 02/13] ci: expose distro name in dockerized GitHub jobs Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 03/13] ci: skip sudo when we are already root Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 04/13] ci: drop duplicate package installation for "linux-gcc-default" Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 05/13] ci: convert "install-dependencies.sh" to use "/bin/sh" Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 06/13] ci: merge custom PATH directories Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 07/13] ci: fix setup of custom path for GitLab CI Patrick Steinhardt
2024-04-11 10:06 ` Eric Sunshine
2024-04-11 10:26 ` Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 08/13] ci: merge scripts which install dependencies Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 09/13] ci: make Perforce binaries executable for all users Patrick Steinhardt
2024-04-11 9:10 ` [PATCH v3 10/13] ci: install JGit dependency Patrick Steinhardt
2024-04-11 9:11 ` [PATCH v3 11/13] t06xx: always execute backend-specific tests Patrick Steinhardt
2024-04-11 9:11 ` [PATCH v3 12/13] t0610: fix non-portable variable assignment Patrick Steinhardt
2024-04-11 9:11 ` [PATCH v3 13/13] t0612: add tests to exercise Git/JGit reftable compatibility Patrick Steinhardt
2024-04-12 4:43 ` [PATCH v4 00/13] t: " Patrick Steinhardt
2024-04-12 4:43 ` [PATCH v4 01/13] ci: rename "runs_on_pool" to "distro" Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 02/13] ci: expose distro name in dockerized GitHub jobs Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 03/13] ci: skip sudo when we are already root Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 04/13] ci: drop duplicate package installation for "linux-gcc-default" Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 05/13] ci: convert "install-dependencies.sh" to use "/bin/sh" Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 06/13] ci: merge custom PATH directories Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 07/13] ci: fix setup of custom path for GitLab CI Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 08/13] ci: merge scripts which install dependencies Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 09/13] ci: make Perforce binaries executable for all users Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 10/13] ci: install JGit dependency Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 11/13] t06xx: always execute backend-specific tests Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 12/13] t0610: fix non-portable variable assignment Patrick Steinhardt
2024-04-12 4:44 ` [PATCH v4 13/13] t0612: add tests to exercise Git/JGit reftable compatibility Patrick Steinhardt
2024-05-03 18:42 ` [PATCH v4 00/13] t: " Justin Tobler
2024-05-03 18:48 ` Patrick Steinhardt
2024-05-03 18:57 ` Patrick Steinhardt
2024-05-03 19:35 ` Justin Tobler
2024-05-03 19:49 ` Patrick Steinhardt
2024-05-04 17:32 ` Justin Tobler
2024-05-06 5:53 ` Patrick Steinhardt
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=Zg_HFtiami4j5th7@ncase \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=hanwenn@gmail.com \
--cc=jgit-dev@eclipse.org \
--cc=luca.milanesio@gmail.com \
--cc=steadmon@google.com \
--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.
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.