[PATCH 2 of 2] config: highlight parse error caused by leading spaces (issue3214)

Augie Fackler raf at durin42.com
Sat Aug 23 14:13:54 CDT 2014


On Wed, Aug 20, 2014 at 11:13:43PM -0700, Pierre-Yves David wrote:
> # HG changeset patch
> # User Razvan Cojocaru <razvan.cojocaru93 at gmail.com>
> # Date 1394983891 -7200
> #      Sun Mar 16 17:31:31 2014 +0200
> # Node ID 558fc3cc3194e4a3c8afa35dc6e234a47467bba9
> # Parent  b09526f454bd930d851963bda21227f9932bccf8
> config: highlight parse error caused by leading spaces (issue3214)

queued, thanks

>
> Added "Unexpected leading whitespace" message to parse error
> when .hgrc has a line that starts with whitespace.
> Helps new users unfamiliar with syntax of rc file.
>
> diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
> --- a/mercurial/dispatch.py
> +++ b/mercurial/dispatch.py
> @@ -56,10 +56,12 @@ def dispatch(req):
>          return -1
>      except error.ParseError, inst:
>          if len(inst.args) > 1:
>              ferr.write(_("hg: parse error at %s: %s\n") %
>                               (inst.args[1], inst.args[0]))
> +            if (inst.args[0][0] == ' '):
> +                ferr.write(_("Unexpected leading whitespace\n"))
>          else:
>              ferr.write(_("hg: parse error: %s\n") % inst.args[0])
>          return -1
>
>      msg = ' '.join(' ' in a and repr(a) or a for a in req.args)
> @@ -153,10 +155,12 @@ def _runcatch(req):
>                  (inst.args[0], " ".join(inst.args[1])))
>      except error.ParseError, inst:
>          if len(inst.args) > 1:
>              ui.warn(_("hg: parse error at %s: %s\n") %
>                               (inst.args[1], inst.args[0]))
> +            if (inst.args[0][0] == ' '):
> +                ui.warn(_("unexpected leading whitespace\n"))
>          else:
>              ui.warn(_("hg: parse error: %s\n") % inst.args[0])
>          return -1
>      except error.LockHeld, inst:
>          if inst.errno == errno.ETIMEDOUT:
> diff --git a/tests/test-config.t b/tests/test-config.t
> --- a/tests/test-config.t
> +++ b/tests/test-config.t
> @@ -17,10 +17,29 @@ Invalid syntax: no key
>    > EOF
>    $ hg showconfig
>    hg: parse error at $TESTTMP/.hg/hgrc:1: =nokeyvalue
>    [255]
>
> +Test hint about invalid syntax from leading white space
> +
> +  $ cat > .hg/hgrc << EOF
> +  >  key=value
> +  > EOF
> +  $ hg showconfig
> +  hg: parse error at $TESTTMP/.hg/hgrc:1:  key=value
> +  unexpected leading whitespace
> +  [255]
> +
> +  $ cat > .hg/hgrc << EOF
> +  >  [section]
> +  > key=value
> +  > EOF
> +  $ hg showconfig
> +  hg: parse error at $TESTTMP/.hg/hgrc:1:  [section]
> +  unexpected leading whitespace
> +  [255]
> +
>  reset hgrc
>
>    $ echo > .hg/hgrc
>
>  Test case sensitive configuration
> diff --git a/tests/test-hgrc.t b/tests/test-hgrc.t
> --- a/tests/test-hgrc.t
> +++ b/tests/test-hgrc.t
> @@ -41,10 +41,11 @@ issue1829: wrong indentation
>
>    $ echo '[foo]' > $HGRC
>    $ echo '  x = y' >> $HGRC
>    $ hg version
>    hg: parse error at $TESTTMP/hgrc:2:   x = y
> +  Unexpected leading whitespace
>    [255]
>
>    $ python -c "print '[foo]\nbar = a\n b\n c \n  de\n fg \nbaz = bif cb \n'" \
>    > > $HGRC
>    $ hg showconfig foo
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list