Subject: Re: t5539 broken under Mac OS X

From: Junio C Hamano <[email-masked]>
Date: Thu, 15 Jan 2015 14:39:56 -0800

Jeff King <[email-masked]> writes:

> The current scheme does not require POSIXPERM. Would this mean that
> some platforms no longer runs SANITY tests (e.g., Windows)?
>
> Many of the SANITY-marked tests already require both, but not all.

Before writing that patchlet, I briefly looked at grep output and
thought that many that are protected only by SANITY lacked POSIXPERM
by mistake:

 t/t1004-read-tree-m-u-wf.sh:test_expect_success SANITY 'funny symlink in...
 t/t3600-rm.sh 'Test that "git rm -f" fails if its rm fails'
 t/t7300-clean.sh:test_expect_success SANITY 'removal failure' '
 t/t7300-clean.sh:test_expect_success SANITY 'git clean -d with an...

All of the above relies on a working chmod as far as I can tell, so
they should require POSIXPERM,SANITY, not just SANITY.

> And
> certainly lib-httpd actually cares whether you are _truly_ root, not
> about weird filesystem permissions. Should lib-httpd literally be
> checking the output of `id` (though I can imagine that is anything but
> portable)?

Even though t/README describes SANITY to require:

  Test is not run by root user, and an attempt to write to an
  unwritable file is expected to fail correctly.

and it has been that way from day one, c91cfd19 (tests: A SANITY
test prereq for testing if we're root, 2010-08-06) is clear that
this is about "'chmod -w' is a good way to test unwritable files"

lib-httpd should, if it cares about the root-ness, be checking that
in a more direct way, "test_have_prereq RUNNING_AS_ROOT".  Making
the implementation of that portable is another matter, though.