[PATCH 3 of 6] require: store missing requirement into MissingRequirementError

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat Jun 18 06:10:01 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1308390048 -7200
# Node ID d162b12a93d0cd8c1ca0c1fcf391f99e600df41e
# Parent  32b4e7235e553a5444e8e78e9390a4ecc1291586
require: store missing requirement into MissingRequirementError

Store missing requirement into the exception instead of the whole error message.
The error message generation is now made were the exception is catched. This
make raising code simpler and adapting the actual error message to the context.

diff -r 32b4e7235e55 -r d162b12a93d0 mercurial/dispatch.py
--- a/mercurial/dispatch.py	Sat Jun 18 11:40:46 2011 +0200
+++ b/mercurial/dispatch.py	Sat Jun 18 11:40:48 2011 +0200
@@ -124,7 +124,8 @@
             ui.warn(_("hg: %s\n") % inst.args[1])
             commands.help_(ui, 'shortlist')
     except error.MissingRequirementError, inst:
-        ui.warn(_("abort: %s\n" % inst))
+        msg = _("abort: unknown repository format: requires feature '%s'\n")
+        ui.warn(_(msg % inst.missing))
         m = _("(see http://mercurial.selenic.com/wiki/RequiresFile for details)\n")
         ui.warn(m)
     except error.RepoError, inst:
diff -r 32b4e7235e55 -r d162b12a93d0 mercurial/error.py
--- a/mercurial/error.py	Sat Jun 18 11:40:46 2011 +0200
+++ b/mercurial/error.py	Sat Jun 18 11:40:48 2011 +0200
@@ -61,7 +61,8 @@
 
 class MissingRequirementError(RequirementError):
     """Exception raised if .hg/requires has an unknown entry."""
-    pass
+    def __init__(self, missing):
+        self.missing = missing
 
 class LockError(IOError):
     def __init__(self, errno, strerror, filename, desc):
diff -r 32b4e7235e55 -r d162b12a93d0 mercurial/scmutil.py
--- a/mercurial/scmutil.py	Sat Jun 18 11:40:46 2011 +0200
+++ b/mercurial/scmutil.py	Sat Jun 18 11:40:48 2011 +0200
@@ -701,6 +701,5 @@
             if not r or not r[0].isalnum():
                 msg = _(".hg/requires file is corrupt")
                 raise error.CorruptRequirementError(msg)
-            msg = _("unknown repository format: requires feature '%s'") % r
-            raise error.MissingRequirementError(msg)
+            raise error.MissingRequirementError(missing=r)
     return requirements


More information about the Mercurial-devel mailing list