diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2022-01-07 12:55:07 +0100 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2022-01-07 12:55:07 +0100 |
commit | 24b560186482f02b830fbbbd09f9f09426d84114 (patch) | |
tree | 71b07b71cde8481f5776d800604983ed60e3998e | |
parent | 83d7067d7568f09ad95f094d17731e643a4a7ce6 (diff) | |
download | psutil-24b560186482f02b830fbbbd09f9f09426d84114.tar.gz |
fix #2048: str(psutil.Error) raise AttributeError
Signed-off-by: Giampaolo Rodola <g.rodola@gmail.com>
-rw-r--r-- | HISTORY.rst | 2 | ||||
-rw-r--r-- | psutil/_common.py | 2 | ||||
-rwxr-xr-x | psutil/tests/test_misc.py | 11 |
3 files changed, 13 insertions, 2 deletions
diff --git a/HISTORY.rst b/HISTORY.rst index 03656314..cef15236 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -5,6 +5,8 @@ **Bug fixes** +- 2048_: ``AttributeError`` is raised if ``psutil.Error`` class is raised + manually and passed through ``str``. - 2049_, [Linux]: `cpu_freq`_ erroneously returns ``curr`` value in GHz while ``min`` and ``max`` are in MHz. diff --git a/psutil/_common.py b/psutil/_common.py index bec8333f..540d2f2d 100644 --- a/psutil/_common.py +++ b/psutil/_common.py @@ -299,7 +299,7 @@ class Error(Exception): ["%s=%r" % (k, v) for k, v in info.items()]) else: details = None - return " ".join([x for x in (self.msg, details) if x]) + return " ".join([x for x in (getattr(self, "msg", ""), details) if x]) def __repr__(self): # invoked on `repr(Error)` diff --git a/psutil/tests/test_misc.py b/psutil/tests/test_misc.py index d946eb62..00bac13b 100755 --- a/psutil/tests/test_misc.py +++ b/psutil/tests/test_misc.py @@ -54,7 +54,7 @@ from psutil.tests import unittest # =================================================================== -class TestMisc(PsutilTestCase): +class TestExceptionClasses(PsutilTestCase): def test_process__repr__(self, func=repr): p = psutil.Process(self.spawn_testproc().pid) @@ -95,6 +95,12 @@ class TestMisc(PsutilTestCase): def test_process__str__(self): self.test_process__repr__(func=str) + def test_error__repr__(self): + self.assertEqual(repr(psutil.Error()), "psutil.Error()") + + def test_error__str__(self): + self.assertEqual(str(psutil.Error()), "") + def test_no_such_process__repr__(self): self.assertEqual( repr(psutil.NoSuchProcess(321)), @@ -161,6 +167,9 @@ class TestMisc(PsutilTestCase): str(psutil.TimeoutExpired(5, pid=321, name="name")), "timeout after 5 seconds (pid=321, name='name')") + +class TestMisc(PsutilTestCase): + def test_process__eq__(self): p1 = psutil.Process() p2 = psutil.Process() |