#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: MIT
#
import subprocess

class OETestCalledProcessError(subprocess.CalledProcessError):
    def __str__(self):
        def strify(o):
            if isinstance(o, bytes):
                return o.decode("utf-8", errors="replace")
            else:
                return o

        s = "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)
        if hasattr(self, "output") and self.output:
            s = s + "\nStandard Output: " + strify(self.output)
        if hasattr(self, "stderr") and self.stderr:
            s = s + "\nStandard Error: " + strify(self.stderr)
        return s

def errors_have_output():
    subprocess.CalledProcessError = OETestCalledProcessError
