[PATCH] tests: introduce c-style conditional sections in .t tests

Adrian Buehlmann adrian at cadifra.com
Sun Jun 3 11:14:34 CDT 2012


On 2012-06-03 15:29, Mads Kiilerich wrote:
> # HG changeset patch
> # User Mads Kiilerich <mads at kiilerich.com>
> # Date 1338510312 -7200
> # Node ID 55b24b85074d21e14c2d92ac1552f15d85c586a5
> # Parent  7b460b49bf7b75c5a4ab444915c52802c9f97f33
> tests: introduce c-style conditional sections in .t tests
> 
> This makes it possible to have conditional sections like:
> 
> #if windows
>   $ echo foo
>   foo
> #else
>   $ echo bar
>   bar
> #endif
> 
> The directives and skipped sections are treated like comments, so don't
> interleave them with commands and their output.
> 
> The parameters to #if are evaluated while preparing the test by passing them
> over to hghave. Requirements can thus be negated with 'no-' prefix, and
> multiple requirements must all be true to return true.
> 
> diff --git a/tests/run-tests.py b/tests/run-tests.py
> --- a/tests/run-tests.py
> +++ b/tests/run-tests.py
> @@ -594,6 +594,19 @@
>      # can generate the surrounding doctest magic
>      inpython = False
>  
> +    # True or False when in a true or false conditional section
> +    skipping = None
> +
> +    def hghave(reqs):
> +        # TODO: do something smarter when all other uses of hghave is gone
> +        proc = Popen4('%s -c "%s/hghave %s"' %
> +                      (options.shell, TESTDIR, ' '.join(reqs)), TESTDIR, 0)

Doesn't work here on Windows 7 with MSYS: ret is always 127, and the
output of the process is (example):

'sh: C:Usersadihgreposhg-maintests/hghave: No such file or directory\n'

It works, if I do:

        tdir = TESTDIR.replace('\\', '/')
        proc = Popen4('%s -c "%s/hghave %s"' %
                      (options.shell, tdir, ' '.join(reqs)), TESTDIR, 0)

Otherwise pretty neat.

Could you please include that fix and resend? Thanks. (Or I'll do it on
your behalf, if you don't mind).


More information about the Mercurial-devel mailing list