Commit ca826508 by Marius Gedminas

Python 3: fix AnsibleError formatting

If you convert the error string to bytes and embed it inside another
error string, you get

  Prefix:

  b'Embedded\nerror\nstring'

which is not what we want.

But we also don't want Unicode in error messages causing unexpected
UnicodeEncodeErrors when on Python 2.

So let's convert the error message into the native string type (bytes on
Python 2, unicode on Python 3).
parent 5617f6aa
......@@ -19,11 +19,18 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
from ansible.errors.yaml_strings import *
from ansible.utils.unicode import to_unicode, to_bytes
if str is bytes:
# Python 2
to_str = to_bytes
else:
# Python 3
to_str = to_unicode
class AnsibleError(Exception):
'''
This is the base class for all errors raised from Ansible code,
......@@ -49,7 +56,7 @@ class AnsibleError(Exception):
if obj and isinstance(obj, AnsibleBaseYAMLObject):
extended_error = self._get_extended_error()
if extended_error:
self.message = 'ERROR! %s\n\n%s' % (message, to_bytes(extended_error))
self.message = 'ERROR! %s\n\n%s' % (message, to_str(extended_error))
else:
self.message = 'ERROR! %s' % message
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment