git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Adam Dinwoodie <adam@dinwoodie.org>,
	git@vger.kernel.org, Fabian Stelzer <fs@gigacodes.de>
Subject: Re: [PATCH] t/lib-git.sh: fix ACL-related permissions failure
Date: Fri, 5 Nov 2021 19:39:47 -0400	[thread overview]
Message-ID: <YYXAwxmhrLLMBqa+@coredump.intra.peff.net> (raw)
In-Reply-To: <xmqqk0hmxyw0.fsf@gitster.g>

On Fri, Nov 05, 2021 at 11:04:15AM -0700, Junio C Hamano wrote:

> > This is sort of a side note to your main issue, but I think that relying
> > on a lazy_prereq for side effects is an anti-pattern. We make no
> > promises about when or how often the prereqs might be run, and we try to
> > insulate them from the main tests (by putting them in a subshell and
> > switching their cwd).
> >
> > It does happen to work here because the prereq script writes directly to
> > $GNUPGHOME, and we run the lazy prereqs about when you'd expect. So I
> > don't think it's really in any danger of breaking, but it is definitely
> > not using the feature as it was intended. :)
> 
> This merely imitates what GPG lazy-prerequisite started and imitated
> by other existing signature backends.

Ah, you're right. I should have checked the other GPG ones. It looks
like that happened recently-ish in b417ec5f22 (tests: turn GPG, GPGSM
and RFC1991 into lazy prereqs, 2020-03-26).

Before that the code was run outside of any test block at all, which I
think is even worse.

> I'd expect that you need some "initialization" for a feature X as
> part of asking "is feature X usable in this environment?".  Reusing
> the result of the initialization for true tests is probably an
> optimization worth making.  As long as the question is answered for
> the true tests, that is [*].

Yes, though if it's possible, I think doing less work in the prereq
check might be a good approach (like say, just checking gpg or openssh
version if we can). It results in flakier prereqs that may say "yes, we
have feature X" when we don't. But it gets a human's attention when
it fails, rather than quietly skipping tests (which is the same point
Adam is making downthread).

It definitely is not something to fiddle with at this point in the -rc
cycle, though.

> > Again, that's mostly a tangent to your issue, and maybe not worth
> > futzing with at this point in the release cycle. I'm mostly just
> > registering my surprise. ;)
> 
> My purist side is with you and share the surprise.  But my practical
> side says this is probably an optimization worth taking.  If prereq
> only checks "if we initialize the keys right way, we can use ssh
> signing" and then removes the key and the equivalent to .ssh/
> directory, and a real test does "Ok, prereq passes so we know ssh
> signing is to be tested.  Now initialize the .ssh/ equivalent and
> create key", a fix like Adam came up with must be duplicated in two
> (or more) places, one for the prereq that initializes the keys
> "right way", and one for each test script that prepares the key used
> for it.

To be clear, I wasn't suggesting doing the key setup twice. I was just
suggesting moving it out of a lazy prereq into a real test_expect block
that sets the prereq flag as a side effect. That just makes the timing
and the fact of running it more deliberate on the part of the test
scripts.

It's probably not worth the effort, though. I think my line of thinking
is coming from the "purist" side, and doesn't have any practical
benefit.

-Peff

  parent reply	other threads:[~2021-11-05 23:39 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-04 19:25 [PATCH] t/lib-git.sh: fix ACL-related permissions failure Adam Dinwoodie
2021-11-04 19:49 ` Junio C Hamano
2021-11-04 20:03   ` Junio C Hamano
2021-11-04 22:36     ` Fabian Stelzer
2021-11-05  7:30       ` Junio C Hamano
2021-11-05 11:25   ` Adam Dinwoodie
2021-11-05 12:06     ` Jeff King
2021-11-05 12:13       ` Fabian Stelzer
2021-11-05 18:04       ` Junio C Hamano
2021-11-05 18:49         ` Adam Dinwoodie
2021-11-05 19:11           ` Junio C Hamano
2021-11-05 19:24             ` Adam Dinwoodie
2021-11-05 21:00               ` Carlo Arenas
2021-11-12 16:01             ` [RFC PATCH] lib-test: show failed prereq was " Fabian Stelzer
2021-11-13  6:10               ` Junio C Hamano
2021-11-13 14:43                 ` Fabian Stelzer
2021-11-05 23:53           ` Jeff King
2021-11-05 23:39         ` Jeff King [this message]
2021-11-05 18:14     ` Junio C Hamano
2021-11-04 20:09 ` Ramsay Jones
2021-11-05 11:47   ` Adam Dinwoodie
2021-11-05 21:44     ` Ramsay Jones
2021-11-05 19:31 ` [PATCH v2] " Adam Dinwoodie
2021-11-05 21:03   ` Junio C Hamano
2021-11-08 16:40     ` Kerry, Richard
2021-11-08 19:14       ` Junio C Hamano
2021-11-09 17:23         ` Kerry, Richard
2021-11-09 18:19           ` 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=YYXAwxmhrLLMBqa+@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=adam@dinwoodie.org \
    --cc=fs@gigacodes.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.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).