Subject: Re: Re: [PATCH] t/lib-httpd: switch SANITY check for NOT_ROOT

From: Torsten Bögershausen <[email-masked]>
Date: Thu, 22 Jan 2015 22:51:37 +0100

On 2015-01-21 23.33, Junio C Hamano wrote:
 > Are you reporting differences between the state before these patches
> and after, or just the fact that with these patches the named tests
> break (which may or may not be broken before the patches)?
> 
The intention was to report what is now breaking.
One example is this one:
---------------------
git.git/master:
ok 15 # skip Test that "git rm -f" fails if its rm fails (missing SANITY)

git.git/pu:
not ok 15 - Test that "git rm -f" fails if its rm fails
#    
#        chmod a-w . &&
#        test_must_fail git rm -f baz &&
#        chmod 775 .
#     

The next step could be to dig further:

If I run that sequence manually:
chmod 755 .
touch x
chmod a-w .
rm x
touch y

x is gone, (but shoudn't according to POSIX)
y is not created, "access denied"

--------------
I can see that there are 3 groups of OS/FS combinations:
Group 1:
  File access bits are not maintained, and not obeyed.
  Typical: VFAT, Git for Windows, (and some network protocols like SAMBA,
	           depending on the OS/FS involved and/or the mount options)
  Typically core.filemode is false after "git init"

Group 2:
  File access bits are maintained and obeyed:
  POSIX/Unix/Linux/Mac OS and CYGWIN
  Typically core.filemode is true after "git init"

Group 3 :
  File access bits are maintained, but not (fully) obeyed
  running as root under Linux/Unix...
  Or Windows, when a file is allowed to be deleted from a directory without write permissions.

-----------------
In short, the following seems to be an improvement:
diff --git a/t/test-lib.sh b/t/test-lib.sh
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1039,7 +1039,17 @@ test_lazy_prereq NOT_ROOT '
 # When the tests are run as root, permission tests will report that
 # things are writable when they shouldn't be.
 test_lazy_prereq SANITY '
-       test_have_prereq POSIXPERM,NOT_ROOT
+       mkdir ds &&
+       touch ds/x &&
+       chmod -w ds &&
+       if rm ds/x
+       then
+               chmod +w ds
+               false
+       else
+               chmod +w ds
+               true
+       fi
 '

-- 
-- 
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.

You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to [email-masked]
To unsubscribe from this group, send email to
[email-masked]
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en

--- 
You received this message because you are subscribed to the Google Groups "Git for Windows" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email-masked].
For more options, visit https://groups.google.com/d/optout.