All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] t1304: Set LOGNAME even if USER is unset or null
@ 2014-10-17 21:39 W. Trevor King
  2014-10-19 22:49 ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: W. Trevor King @ 2014-10-17 21:39 UTC (permalink / raw)
  To: Git; +Cc: W. Trevor King

Avoid:

  # ./t1304-default-acl.sh
  ok 1 - checking for a working acl setup
  ok 2 - Setup test repo
  not ok 3 - Objects creation does not break ACLs with restrictive umask
  #
  #               # SHA1 for empty blob
  #               check_perms_and_acl .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
  #
  not ok 4 - git gc does not break ACLs with restrictive umask
  #
  #               git gc &&
  #               check_perms_and_acl .git/objects/pack/*.pack
  #
  # failed 2 among 4 test(s)
  1..4

on systems where USER isn't set.  It's usually set by the login
process, but it isn't set when launching some Docker images.  For
example:

  $ docker run --rm debian env
  HOME=/
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  HOSTNAME=b2dfdfe797ed

'id -u -n' has been in POSIX from Issue 2 through 2013 [1], so I don't
expect compatibility issues.

[1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/id.html

Signed-off-by: W. Trevor King <wking@tremily.us>
---
The patch is based on the current maint branch.

Previous LOGNAME discussion:

* Michael Gruber on 2011-05-06 suggesting a discussing a whoami
  fallback [1] (but whoami isn't POSIX).
* René Scharfe on 2011-10-14 suggesting USER as a fallback for
  LOGNAME [2].
* Matthieu Moy on 2012-09-17 suggesting dropping $LOGNAME in
  favor of numerical user IDs 'id -u' for a system with multiple
  usernames sharing the same user ID [3].

Obviously, you can work around the problem with:

  # USER=$(id -u -n) ./t1304-default-acl.sh

so the question is really "Are empty-USER systems worth supporting out
of the box?".

Cheers,
Trevor

[1]: http://thread.gmane.org/gmane.comp.version-control.git/172883/focus=172961
[2]: http://thread.gmane.org/gmane.comp.version-control.git/183586
[3]: http://thread.gmane.org/gmane.comp.version-control.git/205690/focus=205703

 t/t1304-default-acl.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/t1304-default-acl.sh b/t/t1304-default-acl.sh
index 79045ab..f5422f1 100755
--- a/t/t1304-default-acl.sh
+++ b/t/t1304-default-acl.sh
@@ -26,7 +26,7 @@ test_expect_success 'checking for a working acl setup' '
 
 if test -z "$LOGNAME"
 then
-	LOGNAME=$USER
+	LOGNAME="${USER:-$(id -u -n)}"
 fi
 
 check_perms_and_acl () {
-- 
2.1.0.60.g85f0837

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

* Re: [PATCH] t1304: Set LOGNAME even if USER is unset or null
  2014-10-17 21:39 [PATCH] t1304: Set LOGNAME even if USER is unset or null W. Trevor King
@ 2014-10-19 22:49 ` Junio C Hamano
  2014-10-20 15:28   ` W. Trevor King
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2014-10-19 22:49 UTC (permalink / raw)
  To: W. Trevor King; +Cc: Git

"W. Trevor King" <wking@tremily.us> writes:

> Previous LOGNAME discussion:
>
> * Michael Gruber on 2011-05-06 suggesting a discussing a whoami
>   fallback [1] (but whoami isn't POSIX).
> * René Scharfe on 2011-10-14 suggesting USER as a fallback for
>   LOGNAME [2].
> * Matthieu Moy on 2012-09-17 suggesting dropping $LOGNAME in
>   favor of numerical user IDs 'id -u' for a system with multiple
>   usernames sharing the same user ID [3].
>
> Obviously, you can work around the problem with:
>
>   # USER=$(id -u -n) ./t1304-default-acl.sh
>
> so the question is really "Are empty-USER systems worth supporting out
> of the box?".
>
> Cheers,
> Trevor
>
> [1]: http://thread.gmane.org/gmane.comp.version-control.git/172883/focus=172961
> [2]: http://thread.gmane.org/gmane.comp.version-control.git/183586
> [3]: http://thread.gmane.org/gmane.comp.version-control.git/205690/focus=205703
>
>  t/t1304-default-acl.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/t1304-default-acl.sh b/t/t1304-default-acl.sh
> index 79045ab..f5422f1 100755
> --- a/t/t1304-default-acl.sh
> +++ b/t/t1304-default-acl.sh
> @@ -26,7 +26,7 @@ test_expect_success 'checking for a working acl setup' '
>  
>  if test -z "$LOGNAME"
>  then
> -	LOGNAME=$USER
> +	LOGNAME="${USER:-$(id -u -n)}"

I'll queue this as-is, but it makes me wonder if we want to do this
without if/then/fi, e.g.

	: ${LOGNAME:=${USER:-$(id -u -n)}

Spelling everything out with if/then/fi is obviously at the other
extreme, i.e.

	if test -z "$LOGNAME"
	then
		if test -n "$USER"
                then
			LOGNAME=$USER
		else
			LOGNAME=$(id -u -n)
		fi
	fi

but it probably is a very bad idea.


More importantly, what if none of the alternatives work?  I
personally feel it is OK to punt and declare test_done early,
instead of giving false positive breakages like you saw without this
patch.

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

* Re: [PATCH] t1304: Set LOGNAME even if USER is unset or null
  2014-10-19 22:49 ` Junio C Hamano
@ 2014-10-20 15:28   ` W. Trevor King
  2014-10-20 18:34     ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: W. Trevor King @ 2014-10-20 15:28 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git

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

On Sun, Oct 19, 2014 at 03:49:36PM -0700, Junio C Hamano wrote:
> I'll queue this as-is, but it makes me wonder if we want to do this
> without if/then/fi, e.g.
> 
> 	: ${LOGNAME:=${USER:-$(id -u -n)}

I'm fine with that too.

> Spelling everything out with if/then/fi is obviously at the other
> extreme, i.e.

And I'm fine with this ;).

> More importantly, what if none of the alternatives work?  I
> personally feel it is OK to punt and declare test_done early,
> instead of giving false positive breakages like you saw without this
> patch.

I can put this into a v2 if you like.  Which conditional syntax do you
prefer?

Cheers,
Trevor

-- 
This email may be signed or encrypted with GnuPG (http://www.gnupg.org).
For more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

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

* Re: [PATCH] t1304: Set LOGNAME even if USER is unset or null
  2014-10-20 15:28   ` W. Trevor King
@ 2014-10-20 18:34     ` Junio C Hamano
  0 siblings, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2014-10-20 18:34 UTC (permalink / raw)
  To: W. Trevor King; +Cc: Git

"W. Trevor King" <wking@tremily.us> writes:

> On Sun, Oct 19, 2014 at 03:49:36PM -0700, Junio C Hamano wrote:
>> I'll queue this as-is, but it makes me wonder if we want to do this
>> without if/then/fi, e.g.
>> 
>> 	: ${LOGNAME:=${USER:-$(id -u -n)}
>
> I'm fine with that too.
>
>> Spelling everything out with if/then/fi is obviously at the other
>> extreme, i.e.
>
> And I'm fine with this ;).
>
>> More importantly, what if none of the alternatives work?  I
>> personally feel it is OK to punt and declare test_done early,
>> instead of giving false positive breakages like you saw without this
>> patch.
>
> I can put this into a v2 if you like.  Which conditional syntax do you
> prefer?

Probably

    if test -z "$LOGNAME"
    then
            LOGNAME="${USER:-$(id -u -n)}"
    else
            : cannot test acl operations without a usable user name
            test_punt!
    fi

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

end of thread, other threads:[~2014-10-20 18:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-17 21:39 [PATCH] t1304: Set LOGNAME even if USER is unset or null W. Trevor King
2014-10-19 22:49 ` Junio C Hamano
2014-10-20 15:28   ` W. Trevor King
2014-10-20 18:34     ` Junio C Hamano

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.