fix: pass return value to SendReply.__exit__ (#127)
This commit is contained in:
parent
8f6a431ea4
commit
f8c67ed00f
@ -762,8 +762,8 @@ class BaseMessageBus:
|
||||
exc_type: Optional[Type[Exception]],
|
||||
exc_value: Optional[Exception],
|
||||
tb: Optional[TracebackType],
|
||||
) -> None:
|
||||
self._exit(exc_type, exc_value, tb)
|
||||
) -> bool:
|
||||
return self._exit(exc_type, exc_value, tb)
|
||||
|
||||
def send_error(self, exc: Exception) -> None:
|
||||
self._exit(exc.__class__, exc, exc.__traceback__)
|
||||
|
||||
@ -1,3 +1,7 @@
|
||||
import logging
|
||||
from logging.handlers import QueueHandler
|
||||
from queue import SimpleQueue
|
||||
|
||||
import pytest
|
||||
|
||||
import dbus_fast.introspection as intr
|
||||
@ -93,14 +97,26 @@ async def test_aio_proxy_object():
|
||||
result = await interface.call_get_complex(unpack_variants=True)
|
||||
assert result == {"hello": "world"}
|
||||
|
||||
with pytest.raises(DBusError):
|
||||
try:
|
||||
await interface.call_throws_error()
|
||||
except DBusError as e:
|
||||
assert e.reply is not None
|
||||
assert e.type == "test.error"
|
||||
assert e.text == "something went wrong"
|
||||
raise e
|
||||
# In addition to the exception passing through, we need to verify that
|
||||
# the exception doesn't trigger logging errors.
|
||||
log_error_queue = SimpleQueue()
|
||||
log_handler = QueueHandler(log_error_queue)
|
||||
logger = logging.getLogger()
|
||||
|
||||
logger.addHandler(log_handler)
|
||||
try:
|
||||
with pytest.raises(DBusError):
|
||||
try:
|
||||
await interface.call_throws_error()
|
||||
except DBusError as e:
|
||||
assert e.reply is not None
|
||||
assert e.type == "test.error"
|
||||
assert e.text == "something went wrong"
|
||||
raise e
|
||||
finally:
|
||||
logger.removeHandler(log_handler)
|
||||
|
||||
assert log_error_queue.empty()
|
||||
|
||||
bus.disconnect()
|
||||
bus2.disconnect()
|
||||
@ -138,15 +154,27 @@ def test_glib_proxy_object():
|
||||
result = interface.call_get_complex_sync(unpack_variants=True)
|
||||
assert result == {"hello": "world"}
|
||||
|
||||
with pytest.raises(DBusError):
|
||||
try:
|
||||
result = interface.call_throws_error_sync()
|
||||
assert False, result
|
||||
except DBusError as e:
|
||||
assert e.reply is not None
|
||||
assert e.type == "test.error"
|
||||
assert e.text == "something went wrong"
|
||||
raise e
|
||||
# In addition to the exception passing through, we need to verify that
|
||||
# the exception doesn't trigger logging errors.
|
||||
log_error_queue = SimpleQueue()
|
||||
log_handler = QueueHandler(log_error_queue)
|
||||
logger = logging.getLogger()
|
||||
|
||||
logger.addHandler(log_handler)
|
||||
try:
|
||||
with pytest.raises(DBusError):
|
||||
try:
|
||||
result = interface.call_throws_error_sync()
|
||||
assert False, result
|
||||
except DBusError as e:
|
||||
assert e.reply is not None
|
||||
assert e.type == "test.error"
|
||||
assert e.text == "something went wrong"
|
||||
raise e
|
||||
finally:
|
||||
logger.removeHandler(log_handler)
|
||||
|
||||
assert log_error_queue.empty()
|
||||
|
||||
bus.disconnect()
|
||||
bus2.disconnect()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user