Added bus name injection to base message bus class and added testing for caller injection
Some checks failed
CI / lint (push) Has been cancelled
CI / Lint Commit Messages (push) Has been cancelled
CI / test (skip_cython, ubuntu-latest, 3.10) (push) Has been cancelled
CI / test (skip_cython, ubuntu-latest, 3.11) (push) Has been cancelled
CI / test (skip_cython, ubuntu-latest, 3.12) (push) Has been cancelled
CI / test (skip_cython, ubuntu-latest, 3.13) (push) Has been cancelled
CI / test (skip_cython, ubuntu-latest, 3.9) (push) Has been cancelled
CI / test (use_cython, ubuntu-latest, 3.10) (push) Has been cancelled
CI / test (use_cython, ubuntu-latest, 3.11) (push) Has been cancelled
CI / test (use_cython, ubuntu-latest, 3.12) (push) Has been cancelled
CI / test (use_cython, ubuntu-latest, 3.13) (push) Has been cancelled
CI / test (use_cython, ubuntu-latest, 3.9) (push) Has been cancelled
CI / Big-endian s390x tests (push) Has been cancelled
CI / benchmark (push) Has been cancelled
CI / release (push) Has been cancelled
CI / Build wheels on macos-latest with arch (push) Has been cancelled
CI / Build wheels on ubuntu-24.04-arm with arch (push) Has been cancelled
CI / Build wheels on ubuntu-latest with arch (push) Has been cancelled
CI / upload_pypi (push) Has been cancelled

This commit is contained in:
2025-05-28 15:25:36 -06:00
parent d7dcb6c952
commit c3468b2391
4 changed files with 35 additions and 3 deletions

View File

@@ -60,6 +60,16 @@ class ExampleInterface(ServiceInterface):
assert type(self) is ExampleInterface
raise DBusError("test.error", "an error occurred")
@method(inject_caller=True)
def echo_caller(self, caller: str | None = None) -> "s":
assert type(self) is ExampleInterface
return caller
@method(inject_caller="source")
def echo_source(self, source: str | None = None) -> "s":
assert type(self) is ExampleInterface
return source
class AsyncInterface(ServiceInterface):
def __init__(self, name):
@@ -108,6 +118,16 @@ class AsyncInterface(ServiceInterface):
assert type(self) is AsyncInterface
raise DBusError("test.error", "an error occurred")
@method(inject_caller=True)
async def echo_caller(self, caller: str | None = None) -> "s":
assert type(self) is AsyncInterface
return caller
@method(inject_caller="source")
async def echo_source(self, source: str | None = None) -> "s":
assert type(self) is AsyncInterface
return source
@pytest.mark.parametrize("interface_class", [ExampleInterface, AsyncInterface])
@pytest.mark.asyncio
@@ -216,6 +236,14 @@ async def test_methods(interface_class):
'test.interface.does_not_exist with signature "" could not be found'
]
reply = await call("echo_caller")
assert reply.message_type == MessageType.METHOD_RETURN, reply.body[0]
assert reply.body[0] == bus2.unique_name
reply = await call("echo_source")
assert reply.message_type == MessageType.METHOD_RETURN, reply.body[0]
assert reply.body[0] == bus2.unique_name
bus1.disconnect()
bus2.disconnect()
bus1._sock.close()