Patchwork [v2] tests: add unix-permissions guards

login
register
mail settings
Submitter timeless@mozdev.org
Date Jan. 12, 2016, 6:40 p.m.
Message ID <c5f8ec6f06171eb42031.1452624037@waste.org>
Download mbox | patch
Permalink /patch/12703/
State Changes Requested
Headers show

Comments

timeless@mozdev.org - Jan. 12, 2016, 6:40 p.m.
# HG changeset patch
# User timeless <timeless@mozdev.org>
# Date 1452576441 18000
#      Tue Jan 12 00:27:21 2016 -0500
# Node ID c5f8ec6f06171eb42031e9da5395173523abb074
# Parent  edd2615ad226c14f6904fc1738c3dc36431db223
tests: add unix-permissions guards

Systems that "care" about execute treat file systems that don't support
execute as if all files are executable. If they didn't, then, anyone
trying to "run" any "scripts" or "programs" from them would be upset
because they wouldn't work at all.

Thus, all 644 become 755.
Matt Harbison - Jan. 13, 2016, 1:07 a.m.
On Tue, 12 Jan 2016 13:40:37 -0500, timeless <timeless@mozdev.org> wrote:

> # HG changeset patch
> # User timeless <timeless@mozdev.org>
> # Date 1452576441 18000
> #      Tue Jan 12 00:27:21 2016 -0500
> # Node ID c5f8ec6f06171eb42031e9da5395173523abb074
> # Parent  edd2615ad226c14f6904fc1738c3dc36431db223
> tests: add unix-permissions guards
>
> Systems that "care" about execute treat file systems that don't support
> execute as if all files are executable.

Unfortunately, that doesn't extend to msys:

$ ls -l blacklists
total 2
-rw-r--r-- 1 Matt Administrators 516 Mar 30  2015 README
-rw-r--r-- 1 Matt Administrators 443 Jun  2  2015 linux-vfat


Not surprisingly:

$ ./run-tests.py --local --change=.^ -j9 -t9000
Skipped test-symlinks.t: missing feature: symbolic links
Skipped test-convert-svn-sink.t: missing feature: subversion client and  
admin tools >= 1.3
Failed test-dirstate.t: output changed
Failed test-rebuildstate.t: output changed
Failed test-backout.t: output changed
Failed test-transplant.t: output changed
Failed test-largefiles-update.t: output changed
Failed test-largefiles.t: output changed
# Ran 8 tests, 2 skipped, 0 warned, 6 failed.


I didn't look into how the other 2 passed.  I wonder if your check should  
be something like:

#if no-unix-permissions no-windows
   # assume 755
#else
   # existing 644 case
#endif


> If they didn't, then, anyone
> trying to "run" any "scripts" or "programs" from them would be upset
> because they wouldn't work at all.
>
> Thus, all 644 become 755.
>
> diff --git a/tests/test-backout.t b/tests/test-backout.t
> --- a/tests/test-backout.t
> +++ b/tests/test-backout.t
> @@ -144,8 +144,13 @@
>    $ touch -t 200001010000 c
>    $ hg status -A
>    C c
> +#if unix-permissions
>    $ hg debugstate --nodates
>    n 644         12 set                 c
> +#else
> +  $ hg debugstate --nodates
> +  n 755         12 set                 c
> +#endif
>    $ hg backout -d '6 0' -m 'to be rollback-ed soon' -r .
>    adding b
>    removing c
> diff --git a/tests/test-convert-svn-sink.t  
> b/tests/test-convert-svn-sink.t
> --- a/tests/test-convert-svn-sink.t
> +++ b/tests/test-convert-svn-sink.t
> @@ -255,9 +255,14 @@
>   $ hg --cwd a up 5
>    0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +#endif
> +#if symlink unix-permissions
>    $ hg --cwd a --config extensions.strip= strip -r 6
>    saved backup bundle to  
> $TESTTMP/a/.hg/strip-backup/bd4f7b7a7067-ed505e42-backup.hg (glob)
> -
> +#endif
> +#if symlink no-unix-permissions
> +  $ hg --cwd a --config extensions.strip= strip -r 6
> +  saved backup bundle to  
> $TESTTMP/a/.hg/strip-backup/acd3468d7783-a37941a0-backup.hg (glob)
>  #endif
> Convert with --full adds and removes files that didn't change
> diff --git a/tests/test-dirstate.t b/tests/test-dirstate.t
> --- a/tests/test-dirstate.t
> +++ b/tests/test-dirstate.t
> @@ -50,17 +50,28 @@
>  Status must not set a's entry to unset (issue1790):
>   $ hg status
> +#if unix-permissions
>    $ hg debugstate
>    n 644          2 2021-01-01 12:00:00 a
> +#else
> +  $ hg debugstate
> +  n 755          2 2021-01-01 12:00:00 a
> +#endif
> Test modulo storage/comparison of absurd dates:
> #if no-aix
>    $ touch -t 195001011200 a
>    $ hg st
> +#endif
> +#if no-aix unix-permissions
>    $ hg debugstate
>    n 644          2 2018-01-19 15:14:08 a
>  #endif
> +#if no-aix no-unix-permissions
> +  $ hg debugstate
> +  n 755          2 2018-01-19 15:14:08 a
> +#endif
> Verify that exceptions during a dirstate change leave the dirstate
>  coherent (issue4353)
> diff --git a/tests/test-keyword.t b/tests/test-keyword.t
> --- a/tests/test-keyword.t
> +++ b/tests/test-keyword.t
> @@ -649,8 +649,16 @@
> #if symlink
>    $ cp sym i
> +#endif
> +#if symlink unix-permissions
>    $ ls -l i
>    -rw-r--r--* (glob)
> +#endif
> +#if symlink no-unix-permissions
> +  $ ls -l i
> +  -rwxrwxrwx* (glob)
> +#endif
> +#if symlink
>    $ head -1 i
>    expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $
>    $ hg copy --after --verbose sym i
> diff --git a/tests/test-largefiles-update.t  
> b/tests/test-largefiles-update.t
> --- a/tests/test-largefiles-update.t
> +++ b/tests/test-largefiles-update.t
> @@ -68,15 +68,22 @@
>   $ hg up
>    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +#if unix-permissions
>    $ hg debugdirstate --large --nodate
>    n 644          7 set                 large1
>    n 644         13 set                 large2
> +#else
> +  $ hg debugdirstate --large --nodate
> +  n 755          7 unset               large1
> +  n 755         13 unset               large2
> +#endif
> Test that lfdirstate keeps track of last modification of largefiles and
>  prevents unnecessary hashing of content - also after linear/noop update
>   $ sleep 1
>    $ hg st
> +#if unix-permissions
>    $ hg debugdirstate --large --nodate
>    n 644          7 set                 large1
>    n 644         13 set                 large2
> @@ -85,6 +92,16 @@
>    $ hg debugdirstate --large --nodate
>    n 644          7 set                 large1
>    n 644         13 set                 large2
> +#else
> +  $ hg debugdirstate --large --nodate
> +  n 755          7 set                 large1
> +  n 755         13 set                 large2
> +  $ hg up
> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  $ hg debugdirstate --large --nodate
> +  n 755          7 set                 large1
> +  n 755         13 set                 large2
> +#endif
> Test that "hg merge" updates largefiles from "other" correctly
> diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
> --- a/tests/test-largefiles.t
> +++ b/tests/test-largefiles.t
> @@ -47,6 +47,7 @@
>    $ touch large1 sub/large2
>    $ sleep 1
>    $ hg st
> +#if unix-permissions
>    $ hg debugstate --nodates
>    n 644         41 set                 .hglf/large1
>    n 644         41 set                 .hglf/sub/large2
> @@ -55,6 +56,16 @@
>    $ hg debugstate --large --nodates
>    n 644          7 set                 large1
>    n 644          7 set                 sub/large2
> +#else
> +  $ hg debugstate --nodates
> +  n 755         41 set                 .hglf/large1
> +  n 755         41 set                 .hglf/sub/large2
> +  n 755          8 set                 normal1
> +  n 755          8 set                 sub/normal2
> +  $ hg debugstate --large --nodates
> +  n 755          7 set                 large1
> +  n 755          7 set                 sub/large2
> +#endif
>    $ echo normal11 > normal1
>    $ echo normal22 > sub/normal2
>    $ echo large11 > large1
> diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t
> --- a/tests/test-rebuildstate.t
> +++ b/tests/test-rebuildstate.t
> @@ -78,6 +78,7 @@
>    ? baz
>    C foo
>    $ hg debugadddrop --normal-lookup baz
> +#if unix-permissions
>    $ hg debugdirstate --nodates
>    r   0          0 * bar (glob)
>    n   0         -1 * baz (glob)
> @@ -88,6 +89,18 @@
>    r   0          0 * bar (glob)
>    n 644          0 * foo (glob)
>    a   0         -1 * qux (glob)
> +#else
> +  $ hg debugdirstate --nodates
> +  r   0          0 * bar (glob)
> +  n   0         -1 * baz (glob)
> +  n 755          0 * foo (glob)
> +  a   0         -1 * qux (glob)
> +  $ hg debugrebuilddirstate --minimal
> +  $ hg debugdirstate --nodates
> +  r   0          0 * bar (glob)
> +  n 755          0 * foo (glob)
> +  a   0         -1 * qux (glob)
> +#endif
>    $ hg status -A
>    A qux
>    R bar
> @@ -104,10 +117,17 @@
>    R bar
>    ? baz
>    C foo
> +#if unix-permissions
>    $ hg debugdirstate --nodates
>    r   0          0 * bar (glob)
>    n 644          0 * foo (glob)
>    a   0         -1 * qux (glob)
> +#else
> +  $ hg debugdirstate --nodates
> +  r   0          0 * bar (glob)
> +  n 755          0 * foo (glob)
> +  a   0         -1 * qux (glob)
> +#endif
>    $ hg debugadddrop --drop foo
>    $ hg debugdirstate --nodates
>    r   0          0 * bar (glob)
> diff --git a/tests/test-symlinks.t b/tests/test-symlinks.t
> --- a/tests/test-symlinks.t
> +++ b/tests/test-symlinks.t
> @@ -33,7 +33,7 @@
>    $ hg commit -m 'is there a bug?'
>    $ cd ..
> -
> +#if unix-permissions
>  == fifo & ignore ==
>   $ hg init test; cd test;
> @@ -66,7 +66,7 @@
>    a.c: unsupported file type (type is fifo)
>    ! a.c
>    $ cd ..
> -
> +#endif
> == symlinks from outside the tree ==
> diff --git a/tests/test-tools.t b/tests/test-tools.t
> --- a/tests/test-tools.t
> +++ b/tests/test-tools.t
> @@ -38,7 +38,7 @@
>    $ f foo
>    foo:
> -#if symlink
> +#if unix-permissions
>    $ f foo --mode
>    foo: mode=644
>  #endif
> @@ -88,7 +88,7 @@
>    $ cd ..
> Yadda is a symlink
> -#if symlink
> +#if unix-permissions symlink
>    $ f -qr dir -HB 17
>    dir: directory with 3 files
>    dir/bar:
> diff --git a/tests/test-transplant.t b/tests/test-transplant.t
> --- a/tests/test-transplant.t
> +++ b/tests/test-transplant.t
> @@ -946,8 +946,13 @@
>   $ cat r1
>    Y1
> +#if unix-permissions
>    $ hg debugstate | grep ' r1$'
>    n 644          3 unset               r1
> +#else
> +  $ hg debugstate | grep ' r1$'
> +  n 755          3 unset               r1
> +#endif
>    $ hg status -A r1
>    M r1
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
timeless - Jan. 13, 2016, 3:43 a.m.
Sigh. Does it do the right or wrong thing on Windows (not msys)?

Barring that, your proposal might be right (it's too late for me to
reason through).

On Tue, Jan 12, 2016 at 8:07 PM, Matt Harbison <mharbison72@gmail.com> wrote:
> On Tue, 12 Jan 2016 13:40:37 -0500, timeless <timeless@mozdev.org> wrote:
>
>> # HG changeset patch
>> # User timeless <timeless@mozdev.org>
>> # Date 1452576441 18000
>> #      Tue Jan 12 00:27:21 2016 -0500
>> # Node ID c5f8ec6f06171eb42031e9da5395173523abb074
>> # Parent  edd2615ad226c14f6904fc1738c3dc36431db223
>> tests: add unix-permissions guards
>>
>> Systems that "care" about execute treat file systems that don't support
>> execute as if all files are executable.
>
>
> Unfortunately, that doesn't extend to msys:
>
> $ ls -l blacklists
> total 2
> -rw-r--r-- 1 Matt Administrators 516 Mar 30  2015 README
> -rw-r--r-- 1 Matt Administrators 443 Jun  2  2015 linux-vfat
>
>
> Not surprisingly:
>
> $ ./run-tests.py --local --change=.^ -j9 -t9000
> Skipped test-symlinks.t: missing feature: symbolic links
> Skipped test-convert-svn-sink.t: missing feature: subversion client and
> admin tools >= 1.3
> Failed test-dirstate.t: output changed
> Failed test-rebuildstate.t: output changed
> Failed test-backout.t: output changed
> Failed test-transplant.t: output changed
> Failed test-largefiles-update.t: output changed
> Failed test-largefiles.t: output changed
> # Ran 8 tests, 2 skipped, 0 warned, 6 failed.
>
>
> I didn't look into how the other 2 passed.  I wonder if your check should be
> something like:
>
> #if no-unix-permissions no-windows
>   # assume 755
> #else
>   # existing 644 case
> #endif
>
>
>
>> If they didn't, then, anyone
>> trying to "run" any "scripts" or "programs" from them would be upset
>> because they wouldn't work at all.
>>
>> Thus, all 644 become 755.
>>
>> diff --git a/tests/test-backout.t b/tests/test-backout.t
>> --- a/tests/test-backout.t
>> +++ b/tests/test-backout.t
>> @@ -144,8 +144,13 @@
>>    $ touch -t 200001010000 c
>>    $ hg status -A
>>    C c
>> +#if unix-permissions
>>    $ hg debugstate --nodates
>>    n 644         12 set                 c
>> +#else
>> +  $ hg debugstate --nodates
>> +  n 755         12 set                 c
>> +#endif
>>    $ hg backout -d '6 0' -m 'to be rollback-ed soon' -r .
>>    adding b
>>    removing c
>> diff --git a/tests/test-convert-svn-sink.t b/tests/test-convert-svn-sink.t
>> --- a/tests/test-convert-svn-sink.t
>> +++ b/tests/test-convert-svn-sink.t
>> @@ -255,9 +255,14 @@
>>   $ hg --cwd a up 5
>>    0 files updated, 0 files merged, 1 files removed, 0 files unresolved
>> +#endif
>> +#if symlink unix-permissions
>>    $ hg --cwd a --config extensions.strip= strip -r 6
>>    saved backup bundle to
>> $TESTTMP/a/.hg/strip-backup/bd4f7b7a7067-ed505e42-backup.hg (glob)
>> -
>> +#endif
>> +#if symlink no-unix-permissions
>> +  $ hg --cwd a --config extensions.strip= strip -r 6
>> +  saved backup bundle to
>> $TESTTMP/a/.hg/strip-backup/acd3468d7783-a37941a0-backup.hg (glob)
>>  #endif
>> Convert with --full adds and removes files that didn't change
>> diff --git a/tests/test-dirstate.t b/tests/test-dirstate.t
>> --- a/tests/test-dirstate.t
>> +++ b/tests/test-dirstate.t
>> @@ -50,17 +50,28 @@
>>  Status must not set a's entry to unset (issue1790):
>>   $ hg status
>> +#if unix-permissions
>>    $ hg debugstate
>>    n 644          2 2021-01-01 12:00:00 a
>> +#else
>> +  $ hg debugstate
>> +  n 755          2 2021-01-01 12:00:00 a
>> +#endif
>> Test modulo storage/comparison of absurd dates:
>> #if no-aix
>>    $ touch -t 195001011200 a
>>    $ hg st
>> +#endif
>> +#if no-aix unix-permissions
>>    $ hg debugstate
>>    n 644          2 2018-01-19 15:14:08 a
>>  #endif
>> +#if no-aix no-unix-permissions
>> +  $ hg debugstate
>> +  n 755          2 2018-01-19 15:14:08 a
>> +#endif
>> Verify that exceptions during a dirstate change leave the dirstate
>>  coherent (issue4353)
>> diff --git a/tests/test-keyword.t b/tests/test-keyword.t
>> --- a/tests/test-keyword.t
>> +++ b/tests/test-keyword.t
>> @@ -649,8 +649,16 @@
>> #if symlink
>>    $ cp sym i
>> +#endif
>> +#if symlink unix-permissions
>>    $ ls -l i
>>    -rw-r--r--* (glob)
>> +#endif
>> +#if symlink no-unix-permissions
>> +  $ ls -l i
>> +  -rwxrwxrwx* (glob)
>> +#endif
>> +#if symlink
>>    $ head -1 i
>>    expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $
>>    $ hg copy --after --verbose sym i
>> diff --git a/tests/test-largefiles-update.t
>> b/tests/test-largefiles-update.t
>> --- a/tests/test-largefiles-update.t
>> +++ b/tests/test-largefiles-update.t
>> @@ -68,15 +68,22 @@
>>   $ hg up
>>    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
>> +#if unix-permissions
>>    $ hg debugdirstate --large --nodate
>>    n 644          7 set                 large1
>>    n 644         13 set                 large2
>> +#else
>> +  $ hg debugdirstate --large --nodate
>> +  n 755          7 unset               large1
>> +  n 755         13 unset               large2
>> +#endif
>> Test that lfdirstate keeps track of last modification of largefiles and
>>  prevents unnecessary hashing of content - also after linear/noop update
>>   $ sleep 1
>>    $ hg st
>> +#if unix-permissions
>>    $ hg debugdirstate --large --nodate
>>    n 644          7 set                 large1
>>    n 644         13 set                 large2
>> @@ -85,6 +92,16 @@
>>    $ hg debugdirstate --large --nodate
>>    n 644          7 set                 large1
>>    n 644         13 set                 large2
>> +#else
>> +  $ hg debugdirstate --large --nodate
>> +  n 755          7 set                 large1
>> +  n 755         13 set                 large2
>> +  $ hg up
>> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
>> +  $ hg debugdirstate --large --nodate
>> +  n 755          7 set                 large1
>> +  n 755         13 set                 large2
>> +#endif
>> Test that "hg merge" updates largefiles from "other" correctly
>> diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
>> --- a/tests/test-largefiles.t
>> +++ b/tests/test-largefiles.t
>> @@ -47,6 +47,7 @@
>>    $ touch large1 sub/large2
>>    $ sleep 1
>>    $ hg st
>> +#if unix-permissions
>>    $ hg debugstate --nodates
>>    n 644         41 set                 .hglf/large1
>>    n 644         41 set                 .hglf/sub/large2
>> @@ -55,6 +56,16 @@
>>    $ hg debugstate --large --nodates
>>    n 644          7 set                 large1
>>    n 644          7 set                 sub/large2
>> +#else
>> +  $ hg debugstate --nodates
>> +  n 755         41 set                 .hglf/large1
>> +  n 755         41 set                 .hglf/sub/large2
>> +  n 755          8 set                 normal1
>> +  n 755          8 set                 sub/normal2
>> +  $ hg debugstate --large --nodates
>> +  n 755          7 set                 large1
>> +  n 755          7 set                 sub/large2
>> +#endif
>>    $ echo normal11 > normal1
>>    $ echo normal22 > sub/normal2
>>    $ echo large11 > large1
>> diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t
>> --- a/tests/test-rebuildstate.t
>> +++ b/tests/test-rebuildstate.t
>> @@ -78,6 +78,7 @@
>>    ? baz
>>    C foo
>>    $ hg debugadddrop --normal-lookup baz
>> +#if unix-permissions
>>    $ hg debugdirstate --nodates
>>    r   0          0 * bar (glob)
>>    n   0         -1 * baz (glob)
>> @@ -88,6 +89,18 @@
>>    r   0          0 * bar (glob)
>>    n 644          0 * foo (glob)
>>    a   0         -1 * qux (glob)
>> +#else
>> +  $ hg debugdirstate --nodates
>> +  r   0          0 * bar (glob)
>> +  n   0         -1 * baz (glob)
>> +  n 755          0 * foo (glob)
>> +  a   0         -1 * qux (glob)
>> +  $ hg debugrebuilddirstate --minimal
>> +  $ hg debugdirstate --nodates
>> +  r   0          0 * bar (glob)
>> +  n 755          0 * foo (glob)
>> +  a   0         -1 * qux (glob)
>> +#endif
>>    $ hg status -A
>>    A qux
>>    R bar
>> @@ -104,10 +117,17 @@
>>    R bar
>>    ? baz
>>    C foo
>> +#if unix-permissions
>>    $ hg debugdirstate --nodates
>>    r   0          0 * bar (glob)
>>    n 644          0 * foo (glob)
>>    a   0         -1 * qux (glob)
>> +#else
>> +  $ hg debugdirstate --nodates
>> +  r   0          0 * bar (glob)
>> +  n 755          0 * foo (glob)
>> +  a   0         -1 * qux (glob)
>> +#endif
>>    $ hg debugadddrop --drop foo
>>    $ hg debugdirstate --nodates
>>    r   0          0 * bar (glob)
>> diff --git a/tests/test-symlinks.t b/tests/test-symlinks.t
>> --- a/tests/test-symlinks.t
>> +++ b/tests/test-symlinks.t
>> @@ -33,7 +33,7 @@
>>    $ hg commit -m 'is there a bug?'
>>    $ cd ..
>> -
>> +#if unix-permissions
>>  == fifo & ignore ==
>>   $ hg init test; cd test;
>> @@ -66,7 +66,7 @@
>>    a.c: unsupported file type (type is fifo)
>>    ! a.c
>>    $ cd ..
>> -
>> +#endif
>> == symlinks from outside the tree ==
>> diff --git a/tests/test-tools.t b/tests/test-tools.t
>> --- a/tests/test-tools.t
>> +++ b/tests/test-tools.t
>> @@ -38,7 +38,7 @@
>>    $ f foo
>>    foo:
>> -#if symlink
>> +#if unix-permissions
>>    $ f foo --mode
>>    foo: mode=644
>>  #endif
>> @@ -88,7 +88,7 @@
>>    $ cd ..
>> Yadda is a symlink
>> -#if symlink
>> +#if unix-permissions symlink
>>    $ f -qr dir -HB 17
>>    dir: directory with 3 files
>>    dir/bar:
>> diff --git a/tests/test-transplant.t b/tests/test-transplant.t
>> --- a/tests/test-transplant.t
>> +++ b/tests/test-transplant.t
>> @@ -946,8 +946,13 @@
>>   $ cat r1
>>    Y1
>> +#if unix-permissions
>>    $ hg debugstate | grep ' r1$'
>>    n 644          3 unset               r1
>> +#else
>> +  $ hg debugstate | grep ' r1$'
>> +  n 755          3 unset               r1
>> +#endif
>>    $ hg status -A r1
>>    M r1
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel@selenic.com
>> https://selenic.com/mailman/listinfo/mercurial-devel
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
Matt Harbison - Jan. 13, 2016, 3:50 a.m.
On Tue, 12 Jan 2016 22:43:34 -0500, timeless <timeless@gmail.com> wrote:

> Sigh. Does it do the right or wrong thing on Windows (not msys)?
>
> Barring that, your proposal might be right (it's too late for me to
> reason through).

Not sure what you mean- the tests only run on Windows with msys, and  
vanilla Windows obviously doesn't have `ls`.

> On Tue, Jan 12, 2016 at 8:07 PM, Matt Harbison <mharbison72@gmail.com>  
> wrote:
>> On Tue, 12 Jan 2016 13:40:37 -0500, timeless <timeless@mozdev.org>  
>> wrote:
>>
>>> # HG changeset patch
>>> # User timeless <timeless@mozdev.org>
>>> # Date 1452576441 18000
>>> #      Tue Jan 12 00:27:21 2016 -0500
>>> # Node ID c5f8ec6f06171eb42031e9da5395173523abb074
>>> # Parent  edd2615ad226c14f6904fc1738c3dc36431db223
>>> tests: add unix-permissions guards
>>>
>>> Systems that "care" about execute treat file systems that don't support
>>> execute as if all files are executable.
>>
>>
>> Unfortunately, that doesn't extend to msys:
>>
>> $ ls -l blacklists
>> total 2
>> -rw-r--r-- 1 Matt Administrators 516 Mar 30  2015 README
>> -rw-r--r-- 1 Matt Administrators 443 Jun  2  2015 linux-vfat
>>
>>
>> Not surprisingly:
>>
>> $ ./run-tests.py --local --change=.^ -j9 -t9000
>> Skipped test-symlinks.t: missing feature: symbolic links
>> Skipped test-convert-svn-sink.t: missing feature: subversion client and
>> admin tools >= 1.3
>> Failed test-dirstate.t: output changed
>> Failed test-rebuildstate.t: output changed
>> Failed test-backout.t: output changed
>> Failed test-transplant.t: output changed
>> Failed test-largefiles-update.t: output changed
>> Failed test-largefiles.t: output changed
>> # Ran 8 tests, 2 skipped, 0 warned, 6 failed.
>>
>>
>> I didn't look into how the other 2 passed.  I wonder if your check  
>> should be
>> something like:
>>
>> #if no-unix-permissions no-windows
>>   # assume 755
>> #else
>>   # existing 644 case
>> #endif
>>
>>
>>
>>> If they didn't, then, anyone
>>> trying to "run" any "scripts" or "programs" from them would be upset
>>> because they wouldn't work at all.
>>>
>>> Thus, all 644 become 755.
>>>
>>> diff --git a/tests/test-backout.t b/tests/test-backout.t
>>> --- a/tests/test-backout.t
>>> +++ b/tests/test-backout.t
>>> @@ -144,8 +144,13 @@
>>>    $ touch -t 200001010000 c
>>>    $ hg status -A
>>>    C c
>>> +#if unix-permissions
>>>    $ hg debugstate --nodates
>>>    n 644         12 set                 c
>>> +#else
>>> +  $ hg debugstate --nodates
>>> +  n 755         12 set                 c
>>> +#endif
>>>    $ hg backout -d '6 0' -m 'to be rollback-ed soon' -r .
>>>    adding b
>>>    removing c
>>> diff --git a/tests/test-convert-svn-sink.t  
>>> b/tests/test-convert-svn-sink.t
>>> --- a/tests/test-convert-svn-sink.t
>>> +++ b/tests/test-convert-svn-sink.t
>>> @@ -255,9 +255,14 @@
>>>   $ hg --cwd a up 5
>>>    0 files updated, 0 files merged, 1 files removed, 0 files unresolved
>>> +#endif
>>> +#if symlink unix-permissions
>>>    $ hg --cwd a --config extensions.strip= strip -r 6
>>>    saved backup bundle to
>>> $TESTTMP/a/.hg/strip-backup/bd4f7b7a7067-ed505e42-backup.hg (glob)
>>> -
>>> +#endif
>>> +#if symlink no-unix-permissions
>>> +  $ hg --cwd a --config extensions.strip= strip -r 6
>>> +  saved backup bundle to
>>> $TESTTMP/a/.hg/strip-backup/acd3468d7783-a37941a0-backup.hg (glob)
>>>  #endif
>>> Convert with --full adds and removes files that didn't change
>>> diff --git a/tests/test-dirstate.t b/tests/test-dirstate.t
>>> --- a/tests/test-dirstate.t
>>> +++ b/tests/test-dirstate.t
>>> @@ -50,17 +50,28 @@
>>>  Status must not set a's entry to unset (issue1790):
>>>   $ hg status
>>> +#if unix-permissions
>>>    $ hg debugstate
>>>    n 644          2 2021-01-01 12:00:00 a
>>> +#else
>>> +  $ hg debugstate
>>> +  n 755          2 2021-01-01 12:00:00 a
>>> +#endif
>>> Test modulo storage/comparison of absurd dates:
>>> #if no-aix
>>>    $ touch -t 195001011200 a
>>>    $ hg st
>>> +#endif
>>> +#if no-aix unix-permissions
>>>    $ hg debugstate
>>>    n 644          2 2018-01-19 15:14:08 a
>>>  #endif
>>> +#if no-aix no-unix-permissions
>>> +  $ hg debugstate
>>> +  n 755          2 2018-01-19 15:14:08 a
>>> +#endif
>>> Verify that exceptions during a dirstate change leave the dirstate
>>>  coherent (issue4353)
>>> diff --git a/tests/test-keyword.t b/tests/test-keyword.t
>>> --- a/tests/test-keyword.t
>>> +++ b/tests/test-keyword.t
>>> @@ -649,8 +649,16 @@
>>> #if symlink
>>>    $ cp sym i
>>> +#endif
>>> +#if symlink unix-permissions
>>>    $ ls -l i
>>>    -rw-r--r--* (glob)
>>> +#endif
>>> +#if symlink no-unix-permissions
>>> +  $ ls -l i
>>> +  -rwxrwxrwx* (glob)
>>> +#endif
>>> +#if symlink
>>>    $ head -1 i
>>>    expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $
>>>    $ hg copy --after --verbose sym i
>>> diff --git a/tests/test-largefiles-update.t
>>> b/tests/test-largefiles-update.t
>>> --- a/tests/test-largefiles-update.t
>>> +++ b/tests/test-largefiles-update.t
>>> @@ -68,15 +68,22 @@
>>>   $ hg up
>>>    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
>>> +#if unix-permissions
>>>    $ hg debugdirstate --large --nodate
>>>    n 644          7 set                 large1
>>>    n 644         13 set                 large2
>>> +#else
>>> +  $ hg debugdirstate --large --nodate
>>> +  n 755          7 unset               large1
>>> +  n 755         13 unset               large2
>>> +#endif
>>> Test that lfdirstate keeps track of last modification of largefiles and
>>>  prevents unnecessary hashing of content - also after linear/noop  
>>> update
>>>   $ sleep 1
>>>    $ hg st
>>> +#if unix-permissions
>>>    $ hg debugdirstate --large --nodate
>>>    n 644          7 set                 large1
>>>    n 644         13 set                 large2
>>> @@ -85,6 +92,16 @@
>>>    $ hg debugdirstate --large --nodate
>>>    n 644          7 set                 large1
>>>    n 644         13 set                 large2
>>> +#else
>>> +  $ hg debugdirstate --large --nodate
>>> +  n 755          7 set                 large1
>>> +  n 755         13 set                 large2
>>> +  $ hg up
>>> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
>>> +  $ hg debugdirstate --large --nodate
>>> +  n 755          7 set                 large1
>>> +  n 755         13 set                 large2
>>> +#endif
>>> Test that "hg merge" updates largefiles from "other" correctly
>>> diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
>>> --- a/tests/test-largefiles.t
>>> +++ b/tests/test-largefiles.t
>>> @@ -47,6 +47,7 @@
>>>    $ touch large1 sub/large2
>>>    $ sleep 1
>>>    $ hg st
>>> +#if unix-permissions
>>>    $ hg debugstate --nodates
>>>    n 644         41 set                 .hglf/large1
>>>    n 644         41 set                 .hglf/sub/large2
>>> @@ -55,6 +56,16 @@
>>>    $ hg debugstate --large --nodates
>>>    n 644          7 set                 large1
>>>    n 644          7 set                 sub/large2
>>> +#else
>>> +  $ hg debugstate --nodates
>>> +  n 755         41 set                 .hglf/large1
>>> +  n 755         41 set                 .hglf/sub/large2
>>> +  n 755          8 set                 normal1
>>> +  n 755          8 set                 sub/normal2
>>> +  $ hg debugstate --large --nodates
>>> +  n 755          7 set                 large1
>>> +  n 755          7 set                 sub/large2
>>> +#endif
>>>    $ echo normal11 > normal1
>>>    $ echo normal22 > sub/normal2
>>>    $ echo large11 > large1
>>> diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t
>>> --- a/tests/test-rebuildstate.t
>>> +++ b/tests/test-rebuildstate.t
>>> @@ -78,6 +78,7 @@
>>>    ? baz
>>>    C foo
>>>    $ hg debugadddrop --normal-lookup baz
>>> +#if unix-permissions
>>>    $ hg debugdirstate --nodates
>>>    r   0          0 * bar (glob)
>>>    n   0         -1 * baz (glob)
>>> @@ -88,6 +89,18 @@
>>>    r   0          0 * bar (glob)
>>>    n 644          0 * foo (glob)
>>>    a   0         -1 * qux (glob)
>>> +#else
>>> +  $ hg debugdirstate --nodates
>>> +  r   0          0 * bar (glob)
>>> +  n   0         -1 * baz (glob)
>>> +  n 755          0 * foo (glob)
>>> +  a   0         -1 * qux (glob)
>>> +  $ hg debugrebuilddirstate --minimal
>>> +  $ hg debugdirstate --nodates
>>> +  r   0          0 * bar (glob)
>>> +  n 755          0 * foo (glob)
>>> +  a   0         -1 * qux (glob)
>>> +#endif
>>>    $ hg status -A
>>>    A qux
>>>    R bar
>>> @@ -104,10 +117,17 @@
>>>    R bar
>>>    ? baz
>>>    C foo
>>> +#if unix-permissions
>>>    $ hg debugdirstate --nodates
>>>    r   0          0 * bar (glob)
>>>    n 644          0 * foo (glob)
>>>    a   0         -1 * qux (glob)
>>> +#else
>>> +  $ hg debugdirstate --nodates
>>> +  r   0          0 * bar (glob)
>>> +  n 755          0 * foo (glob)
>>> +  a   0         -1 * qux (glob)
>>> +#endif
>>>    $ hg debugadddrop --drop foo
>>>    $ hg debugdirstate --nodates
>>>    r   0          0 * bar (glob)
>>> diff --git a/tests/test-symlinks.t b/tests/test-symlinks.t
>>> --- a/tests/test-symlinks.t
>>> +++ b/tests/test-symlinks.t
>>> @@ -33,7 +33,7 @@
>>>    $ hg commit -m 'is there a bug?'
>>>    $ cd ..
>>> -
>>> +#if unix-permissions
>>>  == fifo & ignore ==
>>>   $ hg init test; cd test;
>>> @@ -66,7 +66,7 @@
>>>    a.c: unsupported file type (type is fifo)
>>>    ! a.c
>>>    $ cd ..
>>> -
>>> +#endif
>>> == symlinks from outside the tree ==
>>> diff --git a/tests/test-tools.t b/tests/test-tools.t
>>> --- a/tests/test-tools.t
>>> +++ b/tests/test-tools.t
>>> @@ -38,7 +38,7 @@
>>>    $ f foo
>>>    foo:
>>> -#if symlink
>>> +#if unix-permissions
>>>    $ f foo --mode
>>>    foo: mode=644
>>>  #endif
>>> @@ -88,7 +88,7 @@
>>>    $ cd ..
>>> Yadda is a symlink
>>> -#if symlink
>>> +#if unix-permissions symlink
>>>    $ f -qr dir -HB 17
>>>    dir: directory with 3 files
>>>    dir/bar:
>>> diff --git a/tests/test-transplant.t b/tests/test-transplant.t
>>> --- a/tests/test-transplant.t
>>> +++ b/tests/test-transplant.t
>>> @@ -946,8 +946,13 @@
>>>   $ cat r1
>>>    Y1
>>> +#if unix-permissions
>>>    $ hg debugstate | grep ' r1$'
>>>    n 644          3 unset               r1
>>> +#else
>>> +  $ hg debugstate | grep ' r1$'
>>> +  n 755          3 unset               r1
>>> +#endif
>>>    $ hg status -A r1
>>>    M r1
>>> _______________________________________________
>>> Mercurial-devel mailing list
>>> Mercurial-devel@selenic.com
>>> https://selenic.com/mailman/listinfo/mercurial-devel
>>
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel@selenic.com
>> https://selenic.com/mailman/listinfo/mercurial-devel
timeless - Jan. 13, 2016, 5:33 a.m.
Oh right. Sorry, it's late and I'm tired.
On Jan 12, 2016 10:50 PM, "Matt Harbison" <mharbison72@gmail.com> wrote:

> On Tue, 12 Jan 2016 22:43:34 -0500, timeless <timeless@gmail.com> wrote:
>
> Sigh. Does it do the right or wrong thing on Windows (not msys)?
>>
>> Barring that, your proposal might be right (it's too late for me to
>> reason through).
>>
>
> Not sure what you mean- the tests only run on Windows with msys, and
> vanilla Windows obviously doesn't have `ls`.
>
> On Tue, Jan 12, 2016 at 8:07 PM, Matt Harbison <mharbison72@gmail.com>
>> wrote:
>>
>>> On Tue, 12 Jan 2016 13:40:37 -0500, timeless <timeless@mozdev.org>
>>> wrote:
>>>
>>> # HG changeset patch
>>>> # User timeless <timeless@mozdev.org>
>>>> # Date 1452576441 18000
>>>> #      Tue Jan 12 00:27:21 2016 -0500
>>>> # Node ID c5f8ec6f06171eb42031e9da5395173523abb074
>>>> # Parent  edd2615ad226c14f6904fc1738c3dc36431db223
>>>> tests: add unix-permissions guards
>>>>
>>>> Systems that "care" about execute treat file systems that don't support
>>>> execute as if all files are executable.
>>>>
>>>
>>>
>>> Unfortunately, that doesn't extend to msys:
>>>
>>> $ ls -l blacklists
>>> total 2
>>> -rw-r--r-- 1 Matt Administrators 516 Mar 30  2015 README
>>> -rw-r--r-- 1 Matt Administrators 443 Jun  2  2015 linux-vfat
>>>
>>>
>>> Not surprisingly:
>>>
>>> $ ./run-tests.py --local --change=.^ -j9 -t9000
>>> Skipped test-symlinks.t: missing feature: symbolic links
>>> Skipped test-convert-svn-sink.t: missing feature: subversion client and
>>> admin tools >= 1.3
>>> Failed test-dirstate.t: output changed
>>> Failed test-rebuildstate.t: output changed
>>> Failed test-backout.t: output changed
>>> Failed test-transplant.t: output changed
>>> Failed test-largefiles-update.t: output changed
>>> Failed test-largefiles.t: output changed
>>> # Ran 8 tests, 2 skipped, 0 warned, 6 failed.
>>>
>>>
>>> I didn't look into how the other 2 passed.  I wonder if your check
>>> should be
>>> something like:
>>>
>>> #if no-unix-permissions no-windows
>>>   # assume 755
>>> #else
>>>   # existing 644 case
>>> #endif
>>>
>>>
>>>
>>> If they didn't, then, anyone
>>>> trying to "run" any "scripts" or "programs" from them would be upset
>>>> because they wouldn't work at all.
>>>>
>>>> Thus, all 644 become 755.
>>>>
>>>> diff --git a/tests/test-backout.t b/tests/test-backout.t
>>>> --- a/tests/test-backout.t
>>>> +++ b/tests/test-backout.t
>>>> @@ -144,8 +144,13 @@
>>>>    $ touch -t 200001010000 c
>>>>    $ hg status -A
>>>>    C c
>>>> +#if unix-permissions
>>>>    $ hg debugstate --nodates
>>>>    n 644         12 set                 c
>>>> +#else
>>>> +  $ hg debugstate --nodates
>>>> +  n 755         12 set                 c
>>>> +#endif
>>>>    $ hg backout -d '6 0' -m 'to be rollback-ed soon' -r .
>>>>    adding b
>>>>    removing c
>>>> diff --git a/tests/test-convert-svn-sink.t
>>>> b/tests/test-convert-svn-sink.t
>>>> --- a/tests/test-convert-svn-sink.t
>>>> +++ b/tests/test-convert-svn-sink.t
>>>> @@ -255,9 +255,14 @@
>>>>   $ hg --cwd a up 5
>>>>    0 files updated, 0 files merged, 1 files removed, 0 files unresolved
>>>> +#endif
>>>> +#if symlink unix-permissions
>>>>    $ hg --cwd a --config extensions.strip= strip -r 6
>>>>    saved backup bundle to
>>>> $TESTTMP/a/.hg/strip-backup/bd4f7b7a7067-ed505e42-backup.hg (glob)
>>>> -
>>>> +#endif
>>>> +#if symlink no-unix-permissions
>>>> +  $ hg --cwd a --config extensions.strip= strip -r 6
>>>> +  saved backup bundle to
>>>> $TESTTMP/a/.hg/strip-backup/acd3468d7783-a37941a0-backup.hg (glob)
>>>>  #endif
>>>> Convert with --full adds and removes files that didn't change
>>>> diff --git a/tests/test-dirstate.t b/tests/test-dirstate.t
>>>> --- a/tests/test-dirstate.t
>>>> +++ b/tests/test-dirstate.t
>>>> @@ -50,17 +50,28 @@
>>>>  Status must not set a's entry to unset (issue1790):
>>>>   $ hg status
>>>> +#if unix-permissions
>>>>    $ hg debugstate
>>>>    n 644          2 2021-01-01 12:00:00 a
>>>> +#else
>>>> +  $ hg debugstate
>>>> +  n 755          2 2021-01-01 12:00:00 a
>>>> +#endif
>>>> Test modulo storage/comparison of absurd dates:
>>>> #if no-aix
>>>>    $ touch -t 195001011200 a
>>>>    $ hg st
>>>> +#endif
>>>> +#if no-aix unix-permissions
>>>>    $ hg debugstate
>>>>    n 644          2 2018-01-19 15:14:08 a
>>>>  #endif
>>>> +#if no-aix no-unix-permissions
>>>> +  $ hg debugstate
>>>> +  n 755          2 2018-01-19 15:14:08 a
>>>> +#endif
>>>> Verify that exceptions during a dirstate change leave the dirstate
>>>>  coherent (issue4353)
>>>> diff --git a/tests/test-keyword.t b/tests/test-keyword.t
>>>> --- a/tests/test-keyword.t
>>>> +++ b/tests/test-keyword.t
>>>> @@ -649,8 +649,16 @@
>>>> #if symlink
>>>>    $ cp sym i
>>>> +#endif
>>>> +#if symlink unix-permissions
>>>>    $ ls -l i
>>>>    -rw-r--r--* (glob)
>>>> +#endif
>>>> +#if symlink no-unix-permissions
>>>> +  $ ls -l i
>>>> +  -rwxrwxrwx* (glob)
>>>> +#endif
>>>> +#if symlink
>>>>    $ head -1 i
>>>>    expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $
>>>>    $ hg copy --after --verbose sym i
>>>> diff --git a/tests/test-largefiles-update.t
>>>> b/tests/test-largefiles-update.t
>>>> --- a/tests/test-largefiles-update.t
>>>> +++ b/tests/test-largefiles-update.t
>>>> @@ -68,15 +68,22 @@
>>>>   $ hg up
>>>>    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
>>>> +#if unix-permissions
>>>>    $ hg debugdirstate --large --nodate
>>>>    n 644          7 set                 large1
>>>>    n 644         13 set                 large2
>>>> +#else
>>>> +  $ hg debugdirstate --large --nodate
>>>> +  n 755          7 unset               large1
>>>> +  n 755         13 unset               large2
>>>> +#endif
>>>> Test that lfdirstate keeps track of last modification of largefiles and
>>>>  prevents unnecessary hashing of content - also after linear/noop update
>>>>   $ sleep 1
>>>>    $ hg st
>>>> +#if unix-permissions
>>>>    $ hg debugdirstate --large --nodate
>>>>    n 644          7 set                 large1
>>>>    n 644         13 set                 large2
>>>> @@ -85,6 +92,16 @@
>>>>    $ hg debugdirstate --large --nodate
>>>>    n 644          7 set                 large1
>>>>    n 644         13 set                 large2
>>>> +#else
>>>> +  $ hg debugdirstate --large --nodate
>>>> +  n 755          7 set                 large1
>>>> +  n 755         13 set                 large2
>>>> +  $ hg up
>>>> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
>>>> +  $ hg debugdirstate --large --nodate
>>>> +  n 755          7 set                 large1
>>>> +  n 755         13 set                 large2
>>>> +#endif
>>>> Test that "hg merge" updates largefiles from "other" correctly
>>>> diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
>>>> --- a/tests/test-largefiles.t
>>>> +++ b/tests/test-largefiles.t
>>>> @@ -47,6 +47,7 @@
>>>>    $ touch large1 sub/large2
>>>>    $ sleep 1
>>>>    $ hg st
>>>> +#if unix-permissions
>>>>    $ hg debugstate --nodates
>>>>    n 644         41 set                 .hglf/large1
>>>>    n 644         41 set                 .hglf/sub/large2
>>>> @@ -55,6 +56,16 @@
>>>>    $ hg debugstate --large --nodates
>>>>    n 644          7 set                 large1
>>>>    n 644          7 set                 sub/large2
>>>> +#else
>>>> +  $ hg debugstate --nodates
>>>> +  n 755         41 set                 .hglf/large1
>>>> +  n 755         41 set                 .hglf/sub/large2
>>>> +  n 755          8 set                 normal1
>>>> +  n 755          8 set                 sub/normal2
>>>> +  $ hg debugstate --large --nodates
>>>> +  n 755          7 set                 large1
>>>> +  n 755          7 set                 sub/large2
>>>> +#endif
>>>>    $ echo normal11 > normal1
>>>>    $ echo normal22 > sub/normal2
>>>>    $ echo large11 > large1
>>>> diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t
>>>> --- a/tests/test-rebuildstate.t
>>>> +++ b/tests/test-rebuildstate.t
>>>> @@ -78,6 +78,7 @@
>>>>    ? baz
>>>>    C foo
>>>>    $ hg debugadddrop --normal-lookup baz
>>>> +#if unix-permissions
>>>>    $ hg debugdirstate --nodates
>>>>    r   0          0 * bar (glob)
>>>>    n   0         -1 * baz (glob)
>>>> @@ -88,6 +89,18 @@
>>>>    r   0          0 * bar (glob)
>>>>    n 644          0 * foo (glob)
>>>>    a   0         -1 * qux (glob)
>>>> +#else
>>>> +  $ hg debugdirstate --nodates
>>>> +  r   0          0 * bar (glob)
>>>> +  n   0         -1 * baz (glob)
>>>> +  n 755          0 * foo (glob)
>>>> +  a   0         -1 * qux (glob)
>>>> +  $ hg debugrebuilddirstate --minimal
>>>> +  $ hg debugdirstate --nodates
>>>> +  r   0          0 * bar (glob)
>>>> +  n 755          0 * foo (glob)
>>>> +  a   0         -1 * qux (glob)
>>>> +#endif
>>>>    $ hg status -A
>>>>    A qux
>>>>    R bar
>>>> @@ -104,10 +117,17 @@
>>>>    R bar
>>>>    ? baz
>>>>    C foo
>>>> +#if unix-permissions
>>>>    $ hg debugdirstate --nodates
>>>>    r   0          0 * bar (glob)
>>>>    n 644          0 * foo (glob)
>>>>    a   0         -1 * qux (glob)
>>>> +#else
>>>> +  $ hg debugdirstate --nodates
>>>> +  r   0          0 * bar (glob)
>>>> +  n 755          0 * foo (glob)
>>>> +  a   0         -1 * qux (glob)
>>>> +#endif
>>>>    $ hg debugadddrop --drop foo
>>>>    $ hg debugdirstate --nodates
>>>>    r   0          0 * bar (glob)
>>>> diff --git a/tests/test-symlinks.t b/tests/test-symlinks.t
>>>> --- a/tests/test-symlinks.t
>>>> +++ b/tests/test-symlinks.t
>>>> @@ -33,7 +33,7 @@
>>>>    $ hg commit -m 'is there a bug?'
>>>>    $ cd ..
>>>> -
>>>> +#if unix-permissions
>>>>  == fifo & ignore ==
>>>>   $ hg init test; cd test;
>>>> @@ -66,7 +66,7 @@
>>>>    a.c: unsupported file type (type is fifo)
>>>>    ! a.c
>>>>    $ cd ..
>>>> -
>>>> +#endif
>>>> == symlinks from outside the tree ==
>>>> diff --git a/tests/test-tools.t b/tests/test-tools.t
>>>> --- a/tests/test-tools.t
>>>> +++ b/tests/test-tools.t
>>>> @@ -38,7 +38,7 @@
>>>>    $ f foo
>>>>    foo:
>>>> -#if symlink
>>>> +#if unix-permissions
>>>>    $ f foo --mode
>>>>    foo: mode=644
>>>>  #endif
>>>> @@ -88,7 +88,7 @@
>>>>    $ cd ..
>>>> Yadda is a symlink
>>>> -#if symlink
>>>> +#if unix-permissions symlink
>>>>    $ f -qr dir -HB 17
>>>>    dir: directory with 3 files
>>>>    dir/bar:
>>>> diff --git a/tests/test-transplant.t b/tests/test-transplant.t
>>>> --- a/tests/test-transplant.t
>>>> +++ b/tests/test-transplant.t
>>>> @@ -946,8 +946,13 @@
>>>>   $ cat r1
>>>>    Y1
>>>> +#if unix-permissions
>>>>    $ hg debugstate | grep ' r1$'
>>>>    n 644          3 unset               r1
>>>> +#else
>>>> +  $ hg debugstate | grep ' r1$'
>>>> +  n 755          3 unset               r1
>>>> +#endif
>>>>    $ hg status -A r1
>>>>    M r1
>>>> _______________________________________________
>>>> Mercurial-devel mailing list
>>>> Mercurial-devel@selenic.com
>>>> https://selenic.com/mailman/listinfo/mercurial-devel
>>>>
>>>
>>> _______________________________________________
>>> Mercurial-devel mailing list
>>> Mercurial-devel@selenic.com
>>> https://selenic.com/mailman/listinfo/mercurial-devel
>>>
>>

Patch

diff --git a/tests/test-backout.t b/tests/test-backout.t
--- a/tests/test-backout.t
+++ b/tests/test-backout.t
@@ -144,8 +144,13 @@ 
   $ touch -t 200001010000 c
   $ hg status -A
   C c
+#if unix-permissions
   $ hg debugstate --nodates
   n 644         12 set                 c
+#else
+  $ hg debugstate --nodates
+  n 755         12 set                 c
+#endif
   $ hg backout -d '6 0' -m 'to be rollback-ed soon' -r .
   adding b
   removing c
diff --git a/tests/test-convert-svn-sink.t b/tests/test-convert-svn-sink.t
--- a/tests/test-convert-svn-sink.t
+++ b/tests/test-convert-svn-sink.t
@@ -255,9 +255,14 @@ 
 
   $ hg --cwd a up 5
   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+#endif
+#if symlink unix-permissions
   $ hg --cwd a --config extensions.strip= strip -r 6
   saved backup bundle to $TESTTMP/a/.hg/strip-backup/bd4f7b7a7067-ed505e42-backup.hg (glob)
-
+#endif
+#if symlink no-unix-permissions
+  $ hg --cwd a --config extensions.strip= strip -r 6
+  saved backup bundle to $TESTTMP/a/.hg/strip-backup/acd3468d7783-a37941a0-backup.hg (glob)
 #endif
 
 Convert with --full adds and removes files that didn't change
diff --git a/tests/test-dirstate.t b/tests/test-dirstate.t
--- a/tests/test-dirstate.t
+++ b/tests/test-dirstate.t
@@ -50,17 +50,28 @@ 
 Status must not set a's entry to unset (issue1790):
 
   $ hg status
+#if unix-permissions
   $ hg debugstate
   n 644          2 2021-01-01 12:00:00 a
+#else
+  $ hg debugstate
+  n 755          2 2021-01-01 12:00:00 a
+#endif
 
 Test modulo storage/comparison of absurd dates:
 
 #if no-aix
   $ touch -t 195001011200 a
   $ hg st
+#endif
+#if no-aix unix-permissions
   $ hg debugstate
   n 644          2 2018-01-19 15:14:08 a
 #endif
+#if no-aix no-unix-permissions
+  $ hg debugstate
+  n 755          2 2018-01-19 15:14:08 a
+#endif
 
 Verify that exceptions during a dirstate change leave the dirstate
 coherent (issue4353)
diff --git a/tests/test-keyword.t b/tests/test-keyword.t
--- a/tests/test-keyword.t
+++ b/tests/test-keyword.t
@@ -649,8 +649,16 @@ 
 
 #if symlink
   $ cp sym i
+#endif
+#if symlink unix-permissions
   $ ls -l i
   -rw-r--r--* (glob)
+#endif
+#if symlink no-unix-permissions
+  $ ls -l i
+  -rwxrwxrwx* (glob)
+#endif
+#if symlink
   $ head -1 i
   expand $Id: a,v ef63ca68695b 1970/01/01 00:00:00 user $
   $ hg copy --after --verbose sym i
diff --git a/tests/test-largefiles-update.t b/tests/test-largefiles-update.t
--- a/tests/test-largefiles-update.t
+++ b/tests/test-largefiles-update.t
@@ -68,15 +68,22 @@ 
 
   $ hg up
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+#if unix-permissions
   $ hg debugdirstate --large --nodate
   n 644          7 set                 large1
   n 644         13 set                 large2
+#else
+  $ hg debugdirstate --large --nodate
+  n 755          7 unset               large1
+  n 755         13 unset               large2
+#endif
 
 Test that lfdirstate keeps track of last modification of largefiles and
 prevents unnecessary hashing of content - also after linear/noop update
 
   $ sleep 1
   $ hg st
+#if unix-permissions
   $ hg debugdirstate --large --nodate
   n 644          7 set                 large1
   n 644         13 set                 large2
@@ -85,6 +92,16 @@ 
   $ hg debugdirstate --large --nodate
   n 644          7 set                 large1
   n 644         13 set                 large2
+#else
+  $ hg debugdirstate --large --nodate
+  n 755          7 set                 large1
+  n 755         13 set                 large2
+  $ hg up
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg debugdirstate --large --nodate
+  n 755          7 set                 large1
+  n 755         13 set                 large2
+#endif
 
 Test that "hg merge" updates largefiles from "other" correctly
 
diff --git a/tests/test-largefiles.t b/tests/test-largefiles.t
--- a/tests/test-largefiles.t
+++ b/tests/test-largefiles.t
@@ -47,6 +47,7 @@ 
   $ touch large1 sub/large2
   $ sleep 1
   $ hg st
+#if unix-permissions
   $ hg debugstate --nodates
   n 644         41 set                 .hglf/large1
   n 644         41 set                 .hglf/sub/large2
@@ -55,6 +56,16 @@ 
   $ hg debugstate --large --nodates
   n 644          7 set                 large1
   n 644          7 set                 sub/large2
+#else
+  $ hg debugstate --nodates
+  n 755         41 set                 .hglf/large1
+  n 755         41 set                 .hglf/sub/large2
+  n 755          8 set                 normal1
+  n 755          8 set                 sub/normal2
+  $ hg debugstate --large --nodates
+  n 755          7 set                 large1
+  n 755          7 set                 sub/large2
+#endif
   $ echo normal11 > normal1
   $ echo normal22 > sub/normal2
   $ echo large11 > large1
diff --git a/tests/test-rebuildstate.t b/tests/test-rebuildstate.t
--- a/tests/test-rebuildstate.t
+++ b/tests/test-rebuildstate.t
@@ -78,6 +78,7 @@ 
   ? baz
   C foo
   $ hg debugadddrop --normal-lookup baz
+#if unix-permissions
   $ hg debugdirstate --nodates
   r   0          0 * bar (glob)
   n   0         -1 * baz (glob)
@@ -88,6 +89,18 @@ 
   r   0          0 * bar (glob)
   n 644          0 * foo (glob)
   a   0         -1 * qux (glob)
+#else
+  $ hg debugdirstate --nodates
+  r   0          0 * bar (glob)
+  n   0         -1 * baz (glob)
+  n 755          0 * foo (glob)
+  a   0         -1 * qux (glob)
+  $ hg debugrebuilddirstate --minimal
+  $ hg debugdirstate --nodates
+  r   0          0 * bar (glob)
+  n 755          0 * foo (glob)
+  a   0         -1 * qux (glob)
+#endif
   $ hg status -A
   A qux
   R bar
@@ -104,10 +117,17 @@ 
   R bar
   ? baz
   C foo
+#if unix-permissions
   $ hg debugdirstate --nodates
   r   0          0 * bar (glob)
   n 644          0 * foo (glob)
   a   0         -1 * qux (glob)
+#else
+  $ hg debugdirstate --nodates
+  r   0          0 * bar (glob)
+  n 755          0 * foo (glob)
+  a   0         -1 * qux (glob)
+#endif
   $ hg debugadddrop --drop foo
   $ hg debugdirstate --nodates
   r   0          0 * bar (glob)
diff --git a/tests/test-symlinks.t b/tests/test-symlinks.t
--- a/tests/test-symlinks.t
+++ b/tests/test-symlinks.t
@@ -33,7 +33,7 @@ 
   $ hg commit -m 'is there a bug?'
   $ cd ..
 
-
+#if unix-permissions
 == fifo & ignore ==
 
   $ hg init test; cd test;
@@ -66,7 +66,7 @@ 
   a.c: unsupported file type (type is fifo)
   ! a.c
   $ cd ..
-
+#endif
 
 == symlinks from outside the tree ==
 
diff --git a/tests/test-tools.t b/tests/test-tools.t
--- a/tests/test-tools.t
+++ b/tests/test-tools.t
@@ -38,7 +38,7 @@ 
   $ f foo
   foo:
 
-#if symlink
+#if unix-permissions
   $ f foo --mode
   foo: mode=644
 #endif
@@ -88,7 +88,7 @@ 
   $ cd ..
 
 Yadda is a symlink
-#if symlink
+#if unix-permissions symlink
   $ f -qr dir -HB 17
   dir: directory with 3 files
   dir/bar:
diff --git a/tests/test-transplant.t b/tests/test-transplant.t
--- a/tests/test-transplant.t
+++ b/tests/test-transplant.t
@@ -946,8 +946,13 @@ 
 
   $ cat r1
   Y1
+#if unix-permissions
   $ hg debugstate | grep ' r1$'
   n 644          3 unset               r1
+#else
+  $ hg debugstate | grep ' r1$'
+  n 755          3 unset               r1
+#endif
   $ hg status -A r1
   M r1