-
Notifications
You must be signed in to change notification settings - Fork 778
Expand file tree
/
Copy pathlogind.py
More file actions
49 lines (35 loc) · 1.26 KB
/
logind.py
File metadata and controls
49 lines (35 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""Mock of logind dbus service."""
import os
import tempfile
from dbus_fast import DBusError
from dbus_fast.service import signal
from .base import DBusServiceMock, dbus_method
BUS_NAME = "org.freedesktop.login1"
def setup(object_path: str | None = None) -> DBusServiceMock:
"""Create dbus mock object."""
return Logind()
class Logind(DBusServiceMock):
"""Logind mock.
gdbus introspect --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1
"""
object_path = "/org/freedesktop/login1"
interface = "org.freedesktop.login1.Manager"
side_effect_reboot: DBusError | None = None
@dbus_method()
def Reboot(self, interactive: "b") -> None:
"""Reboot."""
if self.side_effect_reboot:
raise self.side_effect_reboot # pylint: disable=raising-bad-type
@dbus_method()
def PowerOff(self, interactive: "b") -> None:
"""PowerOff."""
@dbus_method()
def Inhibit(self, what: "s", who: "s", why: "s", mode: "s") -> "h":
"""Take an inhibitor lock. Returns a file descriptor."""
fd, path = tempfile.mkstemp()
os.unlink(path)
return fd
@signal()
def PrepareForShutdown(self) -> "b":
"""Signal prepare for shutdown."""
return True