Patchwork [3,of,6,V2] revset: store full detail into revsetalias.error for error source distinction

login
register
mail settings
Submitter Katsunori FUJIWARA
Date Jan. 10, 2015, 2:25 p.m.
Message ID <39f801397570f104e70f.1420899943@feefifofum>
Download mbox | patch
Permalink /patch/7422/
State Accepted
Headers show

Comments

Katsunori FUJIWARA - Jan. 10, 2015, 2:25 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
# Date 1420899491 -32400
#      Sat Jan 10 23:18:11 2015 +0900
# Node ID 39f801397570f104e70f4a0f6472386cfd95608a
# Parent  242955b8831a4d125706acdee83b2257bd023dab
revset: store full detail into revsetalias.error for error source distinction

Before this patch, any errors in the declaration of revset alias
aren't detected at all, and there is no information about error source
in the error message.

As a part of preparation for parsing alias declarations and
definitions more strictly, this patch stores full detail into
"revsetalias.error" for error source distinction.

This makes raising "Abort" and warning potential errors just use
"revsetalias.error" without any message composing.

Patch

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -2117,7 +2117,8 @@ 
             # Check for placeholder injection
             _checkaliasarg(self.replacement, self.args)
         except error.ParseError, inst:
-            self.error = parseerrordetail(inst)
+            self.error = _('failed to parse the definition of revset alias'
+                           ' "%s": %s') % (self.name, parseerrordetail(inst))
 
 def _getalias(aliases, tree):
     """If tree looks like an unexpanded alias, return it. Return None
@@ -2160,8 +2161,7 @@ 
     alias = _getalias(aliases, tree)
     if alias is not None:
         if alias.error:
-            raise util.Abort(_('failed to parse revset alias "%s": %s') %
-                             (alias.name, alias.error))
+            raise util.Abort(alias.error)
         if alias in expanding:
             raise error.ParseError(_('infinite expansion of revset alias "%s" '
                                      'detected') % alias.name)
@@ -2194,9 +2194,7 @@ 
         # warn about problematic (but not referred) aliases
         for name, alias in sorted(aliases.iteritems()):
             if alias.error and not alias.warned:
-                msg = _('failed to parse revset alias "%s": %s'
-                        ) % (name, alias.error)
-                showwarning(_('warning: %s\n') % (msg))
+                showwarning(_('warning: %s\n') % (alias.error))
                 alias.warned = True
     return tree
 
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -982,12 +982,12 @@ 
     (range
       ('symbol', '2')
       ('symbol', '5')))
-  abort: failed to parse revset alias "injectparamasstring2": not a function: _aliasarg
+  abort: failed to parse the definition of revset alias "injectparamasstring2": not a function: _aliasarg
   [255]
   $ hg debugrevspec --debug --config revsetalias.anotherbadone='branch(' "tip"
   ('symbol', 'tip')
-  warning: failed to parse revset alias "anotherbadone": at 7: not a prefix: end
-  warning: failed to parse revset alias "injectparamasstring2": not a function: _aliasarg
+  warning: failed to parse the definition of revset alias "anotherbadone": at 7: not a prefix: end
+  warning: failed to parse the definition of revset alias "injectparamasstring2": not a function: _aliasarg
   9
   >>> data = file('.hg/hgrc', 'rb').read()
   >>> file('.hg/hgrc', 'wb').write(data.replace('_aliasarg', ''))