[PATCH] run-tests: test result shows when a failed test could not start a server

Augie Fackler raf at durin42.com
Fri Feb 28 13:57:33 CST 2014


On Jan 16, 2014, at 3:58 PM, Simon Heimberg <simohe at besonet.ch> wrote:

> # HG changeset patch
> # User Simon Heimberg <simohe at besonet.ch>
> # Date 1385413246 -3600
> # Node ID afdcb3c8d7aae39b02ea208c180e36a2a6602bf0
> # Parent  e2068d5d4289fe61f2e5739d62d92fa3c0c2f285
> run-tests: test result shows when a failed test could not start a server

This looks mostly reasonable to me. Does anyone else have feelings?

> 
> Failing to start a server happens regularly, at least on windows buildbot.
> Such a failure often has nothing to do with the test, but with the environment.
> But half the test output can change because some data is missing. Therefore this
> is worth an extended error message.
> 
> Detect the server failure in the diff output because it is most reliable
> there. Checking the output only does not show if the server failure was
> expected.
> 
> Old failure message when server start failed:
> Failed test-serve.t: output changed
> 
> New message:
> Failed test-serve.t: serve failed and output changed
> 
> diff -r e2068d5d4289 -r afdcb3c8d7aa tests/run-tests.py
> --- a/tests/run-tests.py	Son Nov 17 20:15:28 2013 +0100
> +++ b/tests/run-tests.py	Mon Nov 25 22:00:46 2013 +0100
> @@ -300,8 +300,14 @@
> 
> def showdiff(expected, output, ref, err):
>    print
> +    servefail = False
>    for line in difflib.unified_diff(expected, output, ref, err):
>        sys.stdout.write(line)
> +        if not servefail and line.startswith(
> +                             '+  abort: child process failed to start'):
> +            servefail = True
> +    return {'servefail': servefail}
> +
> 
> verbose = False
> def vlog(*msg):
> @@ -1022,17 +1028,21 @@
>    elif ret == 'timeout':
>        result = fail("timed out", ret)
>    elif out != refout:
> +        info = {}
>        if not options.nodiff:
>            iolock.acquire()
>            if options.view:
>                os.system("%s %s %s" % (options.view, ref, err))
>            else:
> -                showdiff(refout, out, ref, err)
> +                info = showdiff(refout, out, ref, err)
>            iolock.release()
> +        msg = ""
> +        if info.get('servefail'): msg += "serve failed and "
>        if ret:
> -            result = fail("output changed and " + describe(ret), ret)
> +            msg += "output changed and " + describe(ret)
>        else:
> -            result = fail("output changed", ret)
> +            msg += "output changed"
> +        result = fail(msg, ret)
>    elif ret:
>        result = fail(describe(ret), ret)
>    else:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list