aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@google.com>2023-06-08 00:08:44 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-06-08 00:08:44 +0000
commit31de0271674f5068b0bccc8d9ba6092e056995d8 (patch)
tree703fd33edc4a8e80968bd8b299969ba1d521f68f
parent3d2aaa76e0000fb4e090dbad96351b8955928e5b (diff)
parentfed77e7ee9e3efe59f77db0d50d31fe8b14a3012 (diff)
downloadrepohooks-31de0271674f5068b0bccc8d9ba6092e056995d8.tar.gz
utils: update CalledProcessError output python compat logic am: fed77e7ee9
Original change: https://android-review.googlesource.com/c/platform/tools/repohooks/+/2608347 Change-Id: Ia6cb6d8a08e558e5d8491d2bb431572faabde374 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--rh/utils.py23
-rwxr-xr-xrh/utils_unittest.py16
2 files changed, 32 insertions, 7 deletions
diff --git a/rh/utils.py b/rh/utils.py
index 86ff691..157e31b 100644
--- a/rh/utils.py
+++ b/rh/utils.py
@@ -84,17 +84,26 @@ class CalledProcessError(subprocess.CalledProcessError):
"""
def __init__(self, returncode, cmd, stdout=None, stderr=None, msg=None):
- super().__init__(returncode, cmd, stdout)
- # The parent class will set |output|, so delete it.
+ super().__init__(returncode, cmd, stdout, stderr=stderr)
+
+ # The parent class will set |output|, so delete it. If Python ever drops
+ # this output/stdout compat logic, we can drop this to match.
del self.output
- # TODO(vapier): When we're Python 3-only, delete this assignment as the
- # parent handles it for us.
- self.stdout = stdout
- # TODO(vapier): When we're Python 3-only, move stderr to the init above.
- self.stderr = stderr
+ self._stdout = stdout
+
self.msg = msg
@property
+ def stdout(self):
+ """Override parent's usage of .output"""
+ return self._stdout
+
+ @stdout.setter
+ def stdout(self, value):
+ """Override parent's usage of .output"""
+ self._stdout = value
+
+ @property
def cmdstr(self):
"""Return self.cmd as a well shell-quoted string for debugging."""
return '' if self.cmd is None else rh.shell.cmd_to_str(self.cmd)
diff --git a/rh/utils_unittest.py b/rh/utils_unittest.py
index 277abff..bf720a7 100755
--- a/rh/utils_unittest.py
+++ b/rh/utils_unittest.py
@@ -117,6 +117,22 @@ class CalledProcessErrorTests(unittest.TestCase):
err = rh.utils.CalledProcessError(0, ['mycmd'])
self.assertNotEqual('', repr(err))
+ def test_output(self):
+ """Make sure .output is removed and .stdout works."""
+ e = rh.utils.CalledProcessError(
+ 0, ['true'], stdout='STDOUT', stderr='STDERR')
+ with self.assertRaises(AttributeError):
+ assert e.output is None
+ assert e.stdout == 'STDOUT'
+ assert e.stderr == 'STDERR'
+
+ e.stdout = 'STDout'
+ e.stderr = 'STDerr'
+ with self.assertRaises(AttributeError):
+ assert e.output is None
+ assert e.stdout == 'STDout'
+ assert e.stderr == 'STDerr'
+
class RunCommandTests(unittest.TestCase):
"""Verify behavior of run helper."""