git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] t: lib-gpg: flush gpg agent on startup
@ 2017-07-20 16:58 santiago
  2017-07-20 17:01 ` Santiago Torres
  0 siblings, 1 reply; 4+ messages in thread
From: santiago @ 2017-07-20 16:58 UTC (permalink / raw)
  To: git; +Cc: gitster, Santiago Torres

From: Santiago Torres <santiago@nyu.edu>

When running gpg-relevant tests, a gpg-daemon is spawned for each
GNUPGHOME used. This daemon may stay running after the test and cache
file descriptors for the trash directories, even after the trash
directory is removed. This leads to ENOENT errors when attempting to
create files if tests are run multiple times.

Add a cleanup script to force flushing the gpg-agent for that GNUPGHOME
(if any) before setting up the GPG relevant-environment.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Santiago Torres <santiago@nyu.edu>
---
 t/lib-gpg.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh
index ec2aa8f68..7a6c7ee6f 100755
--- a/t/lib-gpg.sh
+++ b/t/lib-gpg.sh
@@ -31,6 +31,7 @@ then
 		chmod 0700 ./gpghome &&
 		GNUPGHOME="$(pwd)/gpghome" &&
 		export GNUPGHOME &&
+		gpgconf --kill gpg-agent 2>&1 >/dev/null
 		gpg --homedir "${GNUPGHOME}" 2>/dev/null --import \
 			"$TEST_DIRECTORY"/lib-gpg/keyring.gpg &&
 		gpg --homedir "${GNUPGHOME}" 2>/dev/null --import-ownertrust \
-- 
2.13.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] t: lib-gpg: flush gpg agent on startup
  2017-07-20 16:58 [PATCH] t: lib-gpg: flush gpg agent on startup santiago
@ 2017-07-20 17:01 ` Santiago Torres
  2017-07-20 20:00   ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Santiago Torres @ 2017-07-20 17:01 UTC (permalink / raw)
  To: git; +Cc: gitster

[-- Attachment #1: Type: text/plain, Size: 1753 bytes --]

This is the patch that stemmed from [1].

I tried to keep it simple and not noisy, alhtough it breaks the &&
chain, it needs to be run right before the --import command. I also
decided to drop the switch chain in case that regression was to be
introduced in the future in other versions (hopefully gpgconf goes
nowhere by then).

I was able to test this on debian oldstable/stable and arch.

Cheers!
-Santiago.

[1] https://public-inbox.org/git/xmqqvampmnmv.fsf@gitster.mtv.corp.google.com/

On Thu, Jul 20, 2017 at 12:58:14PM -0400, santiago@nyu.edu wrote:
> From: Santiago Torres <santiago@nyu.edu>
> 
> When running gpg-relevant tests, a gpg-daemon is spawned for each
> GNUPGHOME used. This daemon may stay running after the test and cache
> file descriptors for the trash directories, even after the trash
> directory is removed. This leads to ENOENT errors when attempting to
> create files if tests are run multiple times.
> 
> Add a cleanup script to force flushing the gpg-agent for that GNUPGHOME
> (if any) before setting up the GPG relevant-environment.
> 
> Helped-by: Junio C Hamano <gitster@pobox.com>
> Signed-off-by: Santiago Torres <santiago@nyu.edu>
> ---
>  t/lib-gpg.sh | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh
> index ec2aa8f68..7a6c7ee6f 100755
> --- a/t/lib-gpg.sh
> +++ b/t/lib-gpg.sh
> @@ -31,6 +31,7 @@ then
>  		chmod 0700 ./gpghome &&
>  		GNUPGHOME="$(pwd)/gpghome" &&
>  		export GNUPGHOME &&
> +		gpgconf --kill gpg-agent 2>&1 >/dev/null
>  		gpg --homedir "${GNUPGHOME}" 2>/dev/null --import \
>  			"$TEST_DIRECTORY"/lib-gpg/keyring.gpg &&
>  		gpg --homedir "${GNUPGHOME}" 2>/dev/null --import-ownertrust \
> -- 
> 2.13.3
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] t: lib-gpg: flush gpg agent on startup
  2017-07-20 17:01 ` Santiago Torres
@ 2017-07-20 20:00   ` Junio C Hamano
  2017-07-20 20:25     ` Santiago Torres
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2017-07-20 20:00 UTC (permalink / raw)
  To: Santiago Torres; +Cc: git

Santiago Torres <santiago@nyu.edu> writes:

> This is the patch that stemmed from [1].
>
> I tried to keep it simple and not noisy, alhtough it breaks the &&
> chain, it needs to be run right before the --import command. I also
> decided to drop the switch chain in case that regression was to be
> introduced in the future in other versions (hopefully gpgconf goes
> nowhere by then).

I'm inclined to do

	...
	export GNUPGHOME &&
	( gpgconf --kill gpg-agent 2>&1 >/dev/null || : ) &&
	gpg --homedir ... --import ...

Imagine "chmod 0777 ./gpghome" failed and what happens. We skip the
part that exports GNUPGHOME and attempts to kill gpg-agent as if
nothing bad happened, and then we try to "--import".  At that point
we do not know what value GNUPGHOME has---are we clobbering the real
keychain the user who runs the test has?

With that "run it but ignore the outcome even if we failed to.", we
do not have to worry about any of that ;-)

>
> I was able to test this on debian oldstable/stable and arch.
>
> Cheers!
> -Santiago.
>
> [1] https://public-inbox.org/git/xmqqvampmnmv.fsf@gitster.mtv.corp.google.com/
>
> On Thu, Jul 20, 2017 at 12:58:14PM -0400, santiago@nyu.edu wrote:
>> From: Santiago Torres <santiago@nyu.edu>
>> 
>> When running gpg-relevant tests, a gpg-daemon is spawned for each
>> GNUPGHOME used. This daemon may stay running after the test and cache
>> file descriptors for the trash directories, even after the trash
>> directory is removed. This leads to ENOENT errors when attempting to
>> create files if tests are run multiple times.
>> 
>> Add a cleanup script to force flushing the gpg-agent for that GNUPGHOME
>> (if any) before setting up the GPG relevant-environment.
>> 
>> Helped-by: Junio C Hamano <gitster@pobox.com>
>> Signed-off-by: Santiago Torres <santiago@nyu.edu>
>> ---
>>  t/lib-gpg.sh | 1 +
>>  1 file changed, 1 insertion(+)
>> 
>> diff --git a/t/lib-gpg.sh b/t/lib-gpg.sh
>> index ec2aa8f68..7a6c7ee6f 100755
>> --- a/t/lib-gpg.sh
>> +++ b/t/lib-gpg.sh
>> @@ -31,6 +31,7 @@ then
>>  		chmod 0700 ./gpghome &&
>>  		GNUPGHOME="$(pwd)/gpghome" &&
>>  		export GNUPGHOME &&
>> +		gpgconf --kill gpg-agent 2>&1 >/dev/null
>>  		gpg --homedir "${GNUPGHOME}" 2>/dev/null --import \
>>  			"$TEST_DIRECTORY"/lib-gpg/keyring.gpg &&
>>  		gpg --homedir "${GNUPGHOME}" 2>/dev/null --import-ownertrust \
>> -- 
>> 2.13.3
>> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] t: lib-gpg: flush gpg agent on startup
  2017-07-20 20:00   ` Junio C Hamano
@ 2017-07-20 20:25     ` Santiago Torres
  0 siblings, 0 replies; 4+ messages in thread
From: Santiago Torres @ 2017-07-20 20:25 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

[-- Attachment #1: Type: text/plain, Size: 192 bytes --]

> With that "run it but ignore the outcome even if we failed to.", we
> do not have to worry about any of that ;-)

Oh right! thanks for the suggestion! Let me re-roll...

Thanks,
-Santiago.


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-07-20 20:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-20 16:58 [PATCH] t: lib-gpg: flush gpg agent on startup santiago
2017-07-20 17:01 ` Santiago Torres
2017-07-20 20:00   ` Junio C Hamano
2017-07-20 20:25     ` Santiago Torres

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).