diff --git a/oslo_versionedobjects/base.py b/oslo_versionedobjects/base.py index d07ba948d17fc4bc771697a854d878a1ef39f87f..72af90a1e91a18992393c93c600d9bd9507c0a8d 100644 --- a/oslo_versionedobjects/base.py +++ b/oslo_versionedobjects/base.py @@ -314,7 +314,7 @@ class VersionedObject(object): field.stringify(getattr(self, name)) or '')) for name, field in sorted(self.fields.items())])) - if not six.PY3: + if six.PY2: repr_str = encodeutils.safe_encode(repr_str, incoming='utf-8') return repr_str diff --git a/oslo_versionedobjects/tests/test_objects.py b/oslo_versionedobjects/tests/test_objects.py index edd0083b2af7399e4ee6a78c4124df27d7e9973b..30a11680d8561dbdc68517089f15aa3a825b0a85 100644 --- a/oslo_versionedobjects/tests/test_objects.py +++ b/oslo_versionedobjects/tests/test_objects.py @@ -1200,6 +1200,20 @@ class _TestObject(object): obj2 = MySensitiveObj() self.assertEqual('MySensitiveObj(data=)', repr(obj2)) + def test_obj_repr_unicode(self): + obj = MyObj(bar=u'\u0191\u01A1\u01A1') + # verify the unicode string has been encoded as ASCII if on python 2 + if six.PY2: + self.assertEqual("MyObj(bar='\xc6\x91\xc6\xa1\xc6\xa1',foo=," + "missing=,mutable_default=,readonly=," + "rel_object=,rel_objects=,timestamp=)", + repr(obj)) + else: + self.assertEqual("MyObj(bar='\u0191\u01A1\u01A1',foo=," + "missing=,mutable_default=,readonly=," + "rel_object=,rel_objects=,timestamp=)", + repr(obj)) + def test_obj_make_obj_compatible_with_relationships(self): subobj = MyOwnedObject(baz=1) obj = MyObj(rel_object=subobj)