Submitter | Pierre-Yves David |
---|---|
Date | Aug. 21, 2014, 6:13 a.m. |
Message ID | <558fc3cc3194e4a3c8af.1408601623@marginatus.alto.octopoid.net> |
Download | mbox | patch |
Permalink | /patch/5546/ |
State | Accepted |
Headers | show |
Comments
On Wed, Aug 20, 2014 at 11:13:43PM -0700, Pierre-Yves David wrote: > # HG changeset patch > # User Razvan Cojocaru <razvan.cojocaru93@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@selenic.com > http://selenic.com/mailman/listinfo/mercurial-devel
Patch
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