[PATCH V4] test-walk: enable for Windows

Mads Kiilerich mads at kiilerich.com
Tue Jun 12 05:19:26 CDT 2012


On 12/06/12 11:08, Adrian Buehlmann wrote:
> # HG changeset patch
> # User Adrian Buehlmann <adrian at cadifra.com>
> # Date 1339418460 -7200
> # Node ID 2b3241a77d6dc768d8821bf96484232564fb1611
> # Parent  b112e265b78a614dac15d5be92d39926d5e653da
> test-walk: enable for Windows
>
> Changes to V2 of the patch:
>
>   - less glob-ish
>   - less horrible to review
>   - still keeps that glog:glob file for all cases
>   - simply doing replace('\\', '/') in debugwalk (after all, it's
>     just a debug command, so why fuss over it?)
>
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -2375,7 +2375,8 @@
>           max([len(abs) for abs in items]),
>           max([len(m.rel(abs)) for abs in items]))
>       for abs in items:
> -        line = fmt % (abs, m.rel(abs), m.exact(abs) and 'exact' or '')
> +        line = fmt % (abs, m.rel(abs).replace('\\', '/'),
> +                      m.exact(abs) and 'exact' or '')
>           ui.write("%s\n" % line.rstrip())
>   
>   @command('debugwireargs',
> diff --git a/tests/test-walk.t b/tests/test-walk.t
> --- a/tests/test-walk.t
> +++ b/tests/test-walk.t
> @@ -1,5 +1,3 @@
> -  $ "$TESTDIR/hghave" no-windows || exit 80
> -
>     $ hg init t
>     $ cd t
>     $ mkdir -p beans
> @@ -14,7 +12,6 @@
>     $ echo fennel > fennel
>     $ echo fenugreek > fenugreek
>     $ echo fiddlehead > fiddlehead
> -  $ echo glob:glob > glob:glob

Btw, not stated explicitly in this thread: This echo will on windows 
create an empty file 'glob'.

>     $ hg addremove
>     adding beans/black
>     adding beans/borlotti
> @@ -25,14 +22,19 @@
>     adding fennel
>     adding fenugreek
>     adding fiddlehead
> -  adding glob:glob
>     adding mammals/Procyonidae/cacomistle
>     adding mammals/Procyonidae/coatimundi
>     adding mammals/Procyonidae/raccoon
>     adding mammals/skunk
> +#if no-windows
> +  $ echo glob:glob > glob:glob
> +  $ hg addremove
> +  adding glob:glob
>     warning: filename contains ':', which is reserved on Windows: 'glob:glob'
> +#endif
>     $ hg commit -m "commit #0"

I would prefer to move all the testing of the file 'glob:glob' to one 
no-windows section ... and then remove the file again so it doesn't 
clobber the rest of the tests.

> @@ -114,13 +181,18 @@
>     f  beans/navy      ../beans/navy
>     f  beans/pinto     ../beans/pinto
>     f  beans/turtle    ../beans/turtle
> -  $ hg debugwalk -I 'relpath:../beans'
> +
> +(arguments 'foo:../bar' are mangled by MSYS, so we do these in Python)
> +
> +  >>> from mercurial.dispatch import request, dispatch
> +  >>> dispatch(request(['debugwalk', '-I', 'relpath:../beans']))

Matt do not like this hack.

relpath and listfile is probably not so relevant to test on all 
platforms. I guess putting this in a #if no-msys could do.

'relpath:ghost/../../beans' could however also be used to work around 
the stupid msys quoting ... and arguably improve the test.

(For glob patterns it might be possible to use 'glob:[.]./beans' ... but 
there is apparently not a problem with globs in the test.)

>   Test patterns:
>   
> +#if no-windows
>     $ hg debugwalk glob:\*
>     f  fennel      fennel
>     f  fenugreek   fenugreek
>     f  fiddlehead  fiddlehead
>     f  glob:glob   glob:glob

I think this is where the 'glob:glob' file really matterns. Creating the 
file here, addremove, walking and deleting it again will give 
approximately the same test coverage as before.

(Experimenting with this gave some unexpected behaviour with glob:glob 
being shown by debugwalk after it had been removed. YYMV.)

Moving 'glob:glob' might however lead to reductio ad absurdum. It is 
possible that 'glob:glob' doesn't test anything relevant that isn't 
tested elsewhere. It just don't think the case should be removed 
silently without reasonable arguments.

> +#else
> +  $ hg debugwalk glob:\*
> +  f  fennel      fennel
> +  f  fenugreek   fenugreek
> +  f  fiddlehead  fiddlehead
> +#endif

/Mads


More information about the Mercurial-devel mailing list