Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests/templates: Store config in dataclass #1608

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions tests/templates/access.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from tests.templates import Response, init_logger, ImplRequest

import dbus.service
from dataclasses import dataclass


BUS_NAME = "org.freedesktop.impl.portal.Test"
Expand All @@ -16,12 +17,22 @@
logger = init_logger(__name__)


@dataclass
class AccessParameters:
delay: int
response: int
expect_close: bool


def load(mock, parameters={}):
logger.debug(f"Loading parameters: {parameters}")

mock.delay: int = parameters.get("delay", 200)
mock.response: int = parameters.get("response", 0)
mock.expect_close: bool = parameters.get("expect-close", False)
assert not hasattr(mock, "access_params")
mock.access_params = AccessParameters(
delay=parameters.get("delay", 200),
response=parameters.get("response", 0),
expect_close=parameters.get("expect-close", False),
)


@dbus.service.method(
Expand All @@ -45,6 +56,7 @@ def AccessDialog(
logger.debug(
f"AccessDialog({handle}, {app_id}, {parent_window}, {title}, {subtitle}, {body}, {options})"
)
params = self.access_params

request = ImplRequest(
self,
Expand All @@ -55,7 +67,7 @@ def AccessDialog(
cb_error,
)

if self.expect_close:
if params.expect_close:
request.wait_for_close()
else:
request.respond(Response(self.response, {}), delay=self.delay)
request.respond(Response(params.response, {}), delay=params.delay)
28 changes: 22 additions & 6 deletions tests/templates/account.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,39 @@
# This file is formatted with Python Black

from tests.templates import Response, init_logger, ImplRequest

import dbus.service
import dbus
from dataclasses import dataclass


BUS_NAME = "org.freedesktop.impl.portal.Test"
MAIN_OBJ = "/org/freedesktop/portal/desktop"
SYSTEM_BUS = False
MAIN_IFACE = "org.freedesktop.impl.portal.Account"


logger = init_logger(__name__)


@dataclass
class AccountParameters:
delay: int
response: int
results: dict
expect_close: bool


def load(mock, parameters={}):
logger.debug(f"Loading parameters: {parameters}")

mock.delay: int = parameters.get("delay", 200)
mock.response: int = parameters.get("response", 0)
mock.results: bool = parameters.get("results", {})
mock.expect_close: bool = parameters.get("expect-close", False)
assert not hasattr(mock, "account_params")
mock.account_params = AccountParameters(
delay=parameters.get("delay", 200),
response=parameters.get("response", 0),
results=parameters.get("results", {}),
expect_close=parameters.get("expect-close", False),
)


@dbus.service.method(
Expand All @@ -31,6 +46,7 @@ def load(mock, parameters={}):
)
def GetUserInformation(self, handle, app_id, window, options, cb_success, cb_error):
logger.debug(f"GetUserInformation({handle}, {app_id}, {window}, {options})")
params = self.account_params

request = ImplRequest(
self,
Expand All @@ -41,7 +57,7 @@ def GetUserInformation(self, handle, app_id, window, options, cb_success, cb_err
cb_error,
)

if self.expect_close:
if params.expect_close:
request.wait_for_close()
else:
request.respond(Response(self.response, self.results), delay=self.delay)
request.respond(Response(params.response, params.results), delay=params.delay)
23 changes: 18 additions & 5 deletions tests/templates/appchooser.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from tests.templates import Response, init_logger, ImplRequest

import dbus.service
from dataclasses import dataclass


BUS_NAME = "org.freedesktop.impl.portal.Test"
Expand All @@ -17,12 +18,23 @@
logger = init_logger(__name__)


@dataclass
class AppchooserParameters:
delay: int
response: int
expect_close: bool


def load(mock, parameters={}):
logger.debug(f"Loading parameters: {parameters}")

mock.delay: int = parameters.get("delay", 200)
mock.response: int = parameters.get("response", 0)
mock.expect_close: bool = parameters.get("expect-close", False)
assert not hasattr(mock, "appchooser_params")
mock.appchooser_params = AppchooserParameters(
delay=parameters.get("delay", 200),
response=parameters.get("response", 0),
expect_close=parameters.get("expect-close", False),
)

mock.AddProperties(
MAIN_IFACE,
dbus.Dictionary(
Expand All @@ -45,6 +57,7 @@ def ChooseApplication(
logger.debug(
f"ChooseApplication({handle}, {app_id}, {parent_window}, {choices}, {options})"
)
params = self.appchooser_params

request = ImplRequest(
self,
Expand All @@ -55,10 +68,10 @@ def ChooseApplication(
cb_error,
)

if self.expect_close:
if params.expect_close:
request.wait_for_close()
else:
request.respond(Response(self.response, {}), delay=self.delay)
request.respond(Response(params.response, {}), delay=params.delay)


@dbus.service.method(
Expand Down
24 changes: 19 additions & 5 deletions tests/templates/background.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,35 @@
# This file is formatted with Python Black

from tests.templates import init_logger

import dbus.service
import dbus
from gi.repository import GLib
from dataclasses import dataclass


BUS_NAME = "org.freedesktop.impl.portal.Test"
MAIN_OBJ = "/org/freedesktop/portal/desktop"
SYSTEM_BUS = False
MAIN_IFACE = "org.freedesktop.impl.portal.Background"
VERSION = 1


logger = init_logger(__name__)


@dataclass
class BackgroundParameters:
delay: int


def load(mock, parameters={}):
logger.debug(f"Loading parameters: {parameters}")

mock.delay: int = parameters.get("delay", 200)
assert not hasattr(mock, "background_params")
mock.background_params = BackgroundParameters(
delay=parameters.get("delay", 200),
)


@dbus.service.method(
Expand All @@ -30,13 +42,14 @@ def load(mock, parameters={}):
)
def GetAppState(self, cb_success, cb_error):
logger.debug("GetAppState()")
params = self.background_params

# FIXME: implement?
def reply():
cb_success({})

logger.debug(f"scheduling delay of {self.delay}")
GLib.timeout_add(self.delay, reply)
logger.debug(f"scheduling delay of {params.delay}")
GLib.timeout_add(params.delay, reply)


@dbus.service.method(
Expand All @@ -47,9 +60,10 @@ def reply():
)
def NotifyBackground(self, handle, app_id, name, cb_success, cb_error):
logger.debug(f"NotifyBackground({handle}, {app_id}, {name})")
params = self.background_params

logger.debug(f"scheduling delay of {self.delay}")
GLib.timeout_add(self.delay, cb_success)
logger.debug(f"scheduling delay of {params.delay}")
GLib.timeout_add(params.delay, cb_success)


@dbus.service.method(
Expand Down
56 changes: 37 additions & 19 deletions tests/templates/clipboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,40 @@
# This file is formatted with Python Black

from tests.templates import init_logger

import dbus.service
import dbus
import tempfile

from gi.repository import GLib
from dataclasses import dataclass


BUS_NAME = "org.freedesktop.impl.portal.Test"
MAIN_OBJ = "/org/freedesktop/portal/desktop"
SYSTEM_BUS = False
MAIN_IFACE = "org.freedesktop.impl.portal.Clipboard"
VERSION = 1


logger = init_logger(__name__)


@dataclass
class ClipboardParameters:
delay: int
response: int
expect_close: bool


def load(mock, parameters={}):
logger.debug(f"Loading parameters: {parameters}")

mock.delay: int = parameters.get("delay", 200)
mock.response: int = parameters.get("response", 0)
mock.expect_close: bool = parameters.get("expect-close", False)
assert not hasattr(mock, "clipboard_params")
mock.clipboard_params = ClipboardParameters(
delay=parameters.get("delay", 200),
response=parameters.get("response", 0),
expect_close=parameters.get("expect-close", False),
)

mock.AddProperties(
MAIN_IFACE,
Expand All @@ -44,12 +57,13 @@ def load(mock, parameters={}):
def RequestClipboard(self, session_handle, options, cb_success, cb_error):
try:
logger.debug(f"RequestClipboard({session_handle}, {options})")
params = self.clipboard_params

if self.expect_close:
if params.expect_close:
cb_success()
else:
logger.debug(f"scheduling delay of {self.delay}")
GLib.timeout_add(self.delay, cb_success)
logger.debug(f"scheduling delay of {params.delay}")
GLib.timeout_add(params.delay, cb_success)
except Exception as e:
logger.critical(e)
cb_error(e)
Expand All @@ -64,12 +78,13 @@ def RequestClipboard(self, session_handle, options, cb_success, cb_error):
def SetSelection(self, session_handle, options, cb_success, cb_error):
try:
logger.debug(f"SetSelection({session_handle}, {options})")
params = self.clipboard_params

if self.expect_close:
if params.expect_close:
cb_success()
else:
logger.debug(f"scheduling delay of {self.delay}")
GLib.timeout_add(self.delay, cb_success)
logger.debug(f"scheduling delay of {params.delay}")
GLib.timeout_add(params.delay, cb_success)
except Exception as e:
logger.critical(e)
cb_error(e)
Expand All @@ -84,19 +99,20 @@ def SetSelection(self, session_handle, options, cb_success, cb_error):
def SelectionWrite(self, session_handle, serial, cb_success, cb_error):
try:
logger.debug(f"SelectionWrite({session_handle}, {serial})")
params = self.clipboard_params

temp_file = tempfile.TemporaryFile()
fd = dbus.types.UnixFd(temp_file.fileno())

if self.expect_close:
if params.expect_close:
cb_success(fd)
else:

def reply():
cb_success(fd)

logger.debug(f"scheduling delay of {self.delay}")
GLib.timeout_add(self.delay, reply)
logger.debug(f"scheduling delay of {params.delay}")
GLib.timeout_add(params.delay, reply)
except Exception as e:
logger.critical(e)
cb_error(e)
Expand All @@ -111,12 +127,13 @@ def reply():
def SelectionWriteDone(self, session_handle, serial, success, cb_success, cb_error):
try:
logger.debug(f"SelectionWriteDone({session_handle}, {serial}, {success})")
params = self.clipboard_params

if self.expect_close:
if params.expect_close:
cb_success()
else:
logger.debug(f"scheduling delay of {self.delay}")
GLib.timeout_add(self.delay, cb_success)
logger.debug(f"scheduling delay of {params.delay}")
GLib.timeout_add(params.delay, cb_success)
except Exception as e:
logger.critical(e)
cb_error(e)
Expand All @@ -131,19 +148,20 @@ def SelectionWriteDone(self, session_handle, serial, success, cb_success, cb_err
def SelectionRead(self, session_handle, mime_type, cb_success, cb_error):
try:
logger.debug(f"SelectionRead({session_handle}, {mime_type})")
params = self.clipboard_params

temp_file = tempfile.TemporaryFile()
fd = dbus.types.UnixFd(temp_file.fileno())

if self.expect_close:
if params.expect_close:
cb_success(fd)
else:

def reply():
cb_success(fd)

logger.debug(f"scheduling delay of {self.delay}")
GLib.timeout_add(self.delay, reply)
logger.debug(f"scheduling delay of {params.delay}")
GLib.timeout_add(params.delay, reply)
except Exception as e:
logger.critical(e)
cb_error(e)
Loading
Loading