[PATCH v2] tests: add unix-permissions guards

Matt Harbison mharbison72 at gmail.com
Tue Jan 12 21:50:19 CST 2016


On Tue, 12 Jan 2016 22:43:34 -0500, timeless <timeless at 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 at gmail.com>  
> wrote:
>> On Tue, 12 Jan 2016 13:40:37 -0500, timeless <timeless at mozdev.org>  
>> wrote:
>>
>>> # HG changeset patch
>>> # User timeless <timeless at 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 at selenic.com
>>> https://selenic.com/mailman/listinfo/mercurial-devel
>>
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel at selenic.com
>> https://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list