[PATCH 2 of 2 V2] chgserver: handle ParseError during validate

Yuya Nishihara yuya at tcha.org
Mon Mar 14 11:43:31 EDT 2016


On Mon, 14 Mar 2016 13:01:29 +0000, Jun Wu wrote:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1457959955 0
> #      Mon Mar 14 12:52:35 2016 +0000
> # Node ID 4f0a686606863ed15e660bce515300769ca82cf9
> # Parent  e57b54cc488387c44eb85e0ef30f5c87619c20c3
> chgserver: handle ParseError during validate

Pushed slightly modified version to the clowncopter, thanks.

> --- a/hgext/chgserver.py
> +++ b/hgext/chgserver.py
> @@ -429,9 +429,17 @@
>                outdated server.
>              - "redirect $path", the client should try to connect to another
>                server instead.
> +            - "exit $n", the client should exit directly with code n.
> +              This may happen if we cannot parse the config.
>          """
>          args = self._readlist()
> -        self.ui = _renewui(self.ui, args)
> +        try:
> +            self.ui = _renewui(self.ui, args)
> +        except error.ParseError as inst:
> +            dispatch._formatparse(self.ui.warn, inst)
> +            self.ui.flush()
> +            self.cresult.write('exit 255\0')

Instructions should be _separated_ by '\0', not terminated. Removed the last
'\0'.

> diff --git a/tests/test-chg.t b/tests/test-chg.t
> new file mode 100644
> --- /dev/null
> +++ b/tests/test-chg.t
> @@ -0,0 +1,17 @@
> +$ cat >> $HGRCPATH <<EOF
> +> [foo]
> +> a=1
> +EOF

These lines are ignored by the test runner and seem unnecessary. Removed.

> +
> +init repo
> +
> +  $ hg init foo
> +  $ cd foo
> +
> +ill-formed config
> +
> +  $ hg status
> +  $ echo '=brokenconfig' >> $HGRCPATH
> +  $ hg status
> +  hg: parse error at * (glob)
> +  [255]

We'll need '#require chg' at some point, but currently this test works with
the pristine "hg", so I've queued as is.


More information about the Mercurial-devel mailing list