Fix internationalization of docstrings of wrap()ed commands.

This commit is contained in:
Valentin Lorentz 2014-01-21 16:33:35 +01:00
parent f27484d2bb
commit 3af1e3f42d
2 changed files with 11 additions and 2 deletions

View File

@ -1071,7 +1071,6 @@ def _wrap(f, specList=[], name=None, checkDoc=True, **kw):
name = name or f.func_name
assert (not checkDoc) or (hasattr(f, '__doc__') and f.__doc__), \
'Command %r has no docstring.' % name
f = internationalizeDocstring(f)
spec = Spec(specList, **kw)
def newf(self, irc, msg, args, **kwargs):
state = spec(irc, msg, args, stateAttrs={'cb': self, 'log': self.log})
@ -1090,7 +1089,8 @@ def _wrap(f, specList=[], name=None, checkDoc=True, **kw):
self.log.debug('Make sure you did not wrap a wrapped '
'function ;)')
raise
return utils.python.changeFunctionName(newf, name, f.__doc__)
newf2 = utils.python.changeFunctionName(newf, name, f.__doc__)
return internationalizeDocstring(newf2)
def wrap(f, *args, **kwargs):
if callable(f):

View File

@ -29,6 +29,7 @@
###
from supybot.test import *
from supybot.commands import wrap
from supybot.i18n import PluginInternationalization, internationalizeDocstring
import supybot.conf as conf
@ -42,6 +43,11 @@ def foo():
"""The operation succeeded."""
pass
@wrap
def bar():
"""The operation succeeded."""
pass
class I18nTestCase(SupyTestCase):
def testPluginInternationalization(self):
self.assertEqual(_(msg_en), msg_en)
@ -54,6 +60,9 @@ class I18nTestCase(SupyTestCase):
def testDocstring(self):
self.assertEqual(foo.__doc__, msg_en)
self.assertEqual(bar.__doc__, msg_en)
with conf.supybot.language.context('fr'):
self.assertEqual(foo.__doc__, msg_fr)
self.assertEqual(bar.__doc__, msg_fr)
self.assertEqual(foo.__doc__, msg_en)
self.assertEqual(bar.__doc__, msg_en)