On Fri, Mar 31, 2023 at 6:00 PM Taylor Blau <me@xxxxxxxxxxxx> wrote: > > On Thu, Mar 30, 2023 at 03:15:48AM -0700, Junio C Hamano wrote: > > > In truth all the patches regarding shell portability have been along > > > the lines of: "this code makes $x shell work, doesn't break other > > > shells, and isn't against POSIX". In some cases even when the Austin > > > group disagreed on what POSIX actually said, we did whatever worked in > > > most shells. > > > > One aspect that is missing in the above is the extra burden on our > > developers. > > Well said. > > Having to remember that we need to write "$ARGZERO" instead of "$0" When have you ever used "$0" in the test suite? A quick grep shows zero results (`git log --author=me@xxxxxxxxxxxx -S'$0'`), so I think you are talking about a hypothetical, not something that would actually happen in reality. Sometimes preemptive optimization pays off in the future, but other times it doesn't, and it's just wasted mental effort. This is one of those times when worrying about a future that will never happen in reality does not pay off. > Is that a big deal? Probably not. But it's a slippery slope, and a weird > gotcha to remember when dealing with our otherwise POSIX-y test suite. You won't have to remember that because you'll never use $0 in the test suite. Nobody does use it, and nobody ever will. *If* for some weird reason somebody needs to use $0, we can worry about it *then*. --- But this is a red herring. The reality is that developers do not have to worry about every little aspect of the test suite. When somebody uses `seq`, somebody else reminds them to use `test_seq` instead, and if for some reason a `seq` slips by and it breaks the test in some obscure platform, the test is updated to fix that. It's not a big deal. Why are many tests using `chmod` instead of `test_chmod`? Did the introduction of `test_chmod` imply an extra burden to "our developers" to remember using that instead of `chmod`? No, *in reality* what everyone cares about is that the test runs on the platforms of the real world. If we could run the test suite on 100 hypothetical platforms that don't exist in the real world, it would break all over the place. In reality all the portability considerations of the test suite are geared towards certain platforms that exist in the real world. Nobody cares that the test suite doesn't run on some hypothetical platforms. So no, nobody needs to remember to use test_chmod, or test_seq, and nobody will ever have to remember to use $ARGZERO instead of $0, and if some hypothetical person does use that in some hypothetical test and that breaks the tests for zsh in native mode, nobody will care, except the person running those tests (likely me), which would promptly fix that single hypothetical instance of $0. Nobody will die if a instance of $0 slipped by (which will never happen). This is simply not a real consideration. Cheers. -- Felipe Contreras