# HG changeset patch # User Takumi IINO # Date 1360919234 -32400 # Node ID 50c922c1b5145dab8baefefb0437d363b6a6c21c # Parent afab180307bef5201d2dee12ede02b848a3464db 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. diff -r afab180307be -r 50c922c1b514 mercurial/context.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 diff -r afab180307be -r 50c922c1b514 mercurial/error.py --- 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.""" diff -r afab180307be -r 50c922c1b514 mercurial/hgweb/hgweb_mod.py --- 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: