Re: [PATCH] t/lib-httpd: switch SANITY check for NOT_ROOT
- From
Kyle J. McKay <mackyle@gmail.com>
- Date
- Jan 16, 2015, 03:27 UTC
- Message-ID
- <BEFF558C-774D-4891-96A0-BE962F8070E7@gmail.com>
- In-Reply-To
- <20150116013256.GA25894@peff.net>
On Jan 15, 2015, at 17:32, Jeff King wrote:
Show 13 quoted lines
> On Thu, Jan 15, 2015 at 04:04:24PM -0800, Junio C Hamano wrote: > >> I wondered what 'perl -e 'print $>' would say in mingw, and if that >> is portable enough, though. > > Good thinking. I guess the best way to find out is to convince > somebody > from msysgit to try this patch. :) > > We may simply find that nobody there even has apache installed on > their > box, and they do not run the http tests at all. >
[...]
> We implement NOT_ROOT by checking perl's "$>" variable, > since we cannot rely on the "id" program being available > everywhere (and we would rather avoid writing a custom C > program to run geteuid if we can).
Does it make a difference that id is POSIX [1]?
So the test "if [ $(id -u) = 0 ]" or similar ought to work.
"id -u" works for me in MSYS and cygwin (each appears to have it's own id.exe).
Show 5 quoted lines
> + > +test_lazy_prereq NOT_ROOT ' > + uid=$(perl -e "print \$<") && > + test "$uid" != 0 > +'
Does NO_PERL affect this? Or is Perl always required to run the tests.
Also "$<" is real user id. Don't you want effective user id ("$>"), that's what the comment says...
Both "$<" and "$>" work for me in MSYS and cygwin although if I run it from cmd.exe using strawberry perl, both "$<" and "$>" give 0. (There's no id.exe for cmd.exe unless it finds the cygwin/msys one.)
As long as NO_PERL is not also intended to affect "make test" either the perl or id version seems fine to me (as long as it's Perl's "$>") since I doubt the tests would run with just cmd.exe. :)
-Kyle
[1] http://pubs.opengroup.org/onlinepubs/009604499/utilities/id.html