hgweb: show correct error message for i18n environment stable 2.5.3
authorTakumi IINO <trot.thunder@gmail.com>
Fri, 15 Feb 2013 18:07:14 +0900
branchstable
changeset 18855 50c922c1b514
parent 18854 afab180307be
child 18856 c9d1241ba11d
hgweb: show correct error message for i18n environment If exception is error.LookupError and running in i18n environment, below condition is always true. Because msg is translated and dosen't contain 'manifest'. if util.safehasattr(err, 'name') and 'manifest' not in msg: This patch creates a new exception class and uses it instead of string match.
mercurial/context.py
mercurial/error.py
mercurial/hgweb/hgweb_mod.py
--- a/mercurial/context.py	Mon Apr 01 18:48:12 2013 -0300
+++ b/mercurial/context.py	Fri Feb 15 18:07:14 2013 +0900
@@ -291,16 +291,16 @@
             try:
                 return self._manifest[path], self._manifest.flags(path)
             except KeyError:
-                raise error.LookupError(self._node, path,
-                                        _('not found in manifest'))
+                raise error.ManifestLookupError(self._node, path,
+                                                _('not found in manifest'))
         if '_manifestdelta' in self.__dict__ or path in self.files():
             if path in self._manifestdelta:
                 return (self._manifestdelta[path],
                         self._manifestdelta.flags(path))
         node, flag = self._repo.manifest.find(self._changeset[0], path)
         if not node:
-            raise error.LookupError(self._node, path,
-                                    _('not found in manifest'))
+            raise error.ManifestLookupError(self._node, path,
+                                            _('not found in manifest'))
 
         return node, flag
 
--- a/mercurial/error.py	Mon Apr 01 18:48:12 2013 -0300
+++ b/mercurial/error.py	Fri Feb 15 18:07:14 2013 +0900
@@ -27,6 +27,9 @@
     def __str__(self):
         return RevlogError.__str__(self)
 
+class ManifestLookupError(LookupError):
+    pass
+
 class CommandError(Exception):
     """Exception raised on errors in parsing the command line."""
 
--- a/mercurial/hgweb/hgweb_mod.py	Mon Apr 01 18:48:12 2013 -0300
+++ b/mercurial/hgweb/hgweb_mod.py	Fri Feb 15 18:07:14 2013 +0900
@@ -245,7 +245,8 @@
         except (error.LookupError, error.RepoLookupError), err:
             req.respond(HTTP_NOT_FOUND, ctype)
             msg = str(err)
-            if util.safehasattr(err, 'name') and 'manifest' not in msg:
+            if (util.safehasattr(err, 'name') and
+                not isinstance(err,  error.ManifestLookupError)):
                 msg = 'revision not found: %s' % err.name
             return tmpl('error', error=msg)
         except (error.RepoError, error.RevlogError), inst: