diff --git a/nova/test.py b/nova/test.py index f7c68e7b9..2f98d6374 100644 --- a/nova/test.py +++ b/nova/test.py @@ -27,6 +27,7 @@ import eventlet eventlet.monkey_patch(os=False) import copy +import gettext import os import shutil import sys @@ -191,6 +192,17 @@ class MoxStubout(fixtures.Fixture): self.addCleanup(self.mox.VerifyAll) +class TranslationFixture(fixtures.Fixture): + """Use gettext NullTranslation objects in tests.""" + + def setUp(self): + super(TranslationFixture, self).setUp() + nulltrans = gettext.NullTranslations() + gettext_fixture = fixtures.MonkeyPatch('gettext.translation', + lambda *x, **y: nulltrans) + self.gettext_patcher = self.useFixture(gettext_fixture) + + class TestingException(Exception): pass @@ -216,6 +228,7 @@ class TestCase(testtools.TestCase): self.useFixture(fixtures.Timeout(test_timeout, gentle=True)) self.useFixture(fixtures.NestedTempfile()) self.useFixture(fixtures.TempHomeDir()) + self.useFixture(TranslationFixture()) if (os.environ.get('OS_STDOUT_CAPTURE') == 'True' or os.environ.get('OS_STDOUT_CAPTURE') == '1'): diff --git a/nova/utils.py b/nova/utils.py index 2bfa9495f..79aa19ae3 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -43,6 +43,7 @@ from oslo.config import cfg from nova import exception from nova.openstack.common import excutils +from nova.openstack.common import gettextutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import importutils from nova.openstack.common import lockutils @@ -476,6 +477,8 @@ def utf8(value): """ if isinstance(value, unicode): return value.encode('utf-8') + elif isinstance(value, gettextutils.Message): + return unicode(value).encode('utf-8') assert isinstance(value, str) return value