From ca4e1d885b0d9dcdeb45ad6f2829f88dafc7949c Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Sat, 6 Nov 2021 12:02:37 +0100 Subject: [PATCH] Fix error message when using notmuch_status_to_string The python exception class was incorrectly loading the error message which resulted in unprintable exception objects. --- bindings/python-cffi/notmuch2/_errors.py | 3 ++- bindings/python-cffi/tests/test_errors.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 bindings/python-cffi/tests/test_errors.py diff --git a/bindings/python-cffi/notmuch2/_errors.py b/bindings/python-cffi/notmuch2/_errors.py index f55cc96b..17c3ad9c 100644 --- a/bindings/python-cffi/notmuch2/_errors.py +++ b/bindings/python-cffi/notmuch2/_errors.py @@ -83,7 +83,8 @@ class NotmuchError(Exception): if self.message: return self.message elif self.status: - return capi.lib.notmuch_status_to_string(self.status) + char_str = capi.lib.notmuch_status_to_string(self.status) + return capi.ffi.string(char_str).decode(errors='replace') else: return 'Unknown error' diff --git a/bindings/python-cffi/tests/test_errors.py b/bindings/python-cffi/tests/test_errors.py new file mode 100644 index 00000000..c2519f86 --- /dev/null +++ b/bindings/python-cffi/tests/test_errors.py @@ -0,0 +1,8 @@ +from notmuch2 import _capi as capi +from notmuch2 import _errors as errors + +def test_status_no_message(): + exc = errors.NotmuchError(capi.lib.NOTMUCH_STATUS_PATH_ERROR) + assert exc.status == capi.lib.NOTMUCH_STATUS_PATH_ERROR + assert exc.message is None + assert str(exc) == 'Path supplied is illegal for this function' -- 2.43.0