tests/mock/colord: Add profile mock support

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2164>
This commit is contained in:
Jonas Ådahl 2021-11-30 11:58:08 +01:00
parent 062abe01b3
commit 60d0394468
2 changed files with 42 additions and 2 deletions

View File

@ -23,11 +23,13 @@ BUS_NAME = BUS_PREFIX
MAIN_OBJ = PATH_PREFIX MAIN_OBJ = PATH_PREFIX
MAIN_IFACE = BUS_NAME MAIN_IFACE = BUS_NAME
DEVICE_IFACE = BUS_PREFIX + '.Device' DEVICE_IFACE = BUS_PREFIX + '.Device'
PROFILE_IFACE = BUS_PREFIX + '.Profile'
SYSTEM_BUS = True SYSTEM_BUS = True
def load(mock, parameters=None): def load(mock, parameters=None):
mock.devices = {} mock.devices = {}
mock.profiles = {}
def escape_unit_name(name): def escape_unit_name(name):
for s in ['.', '-', '\'', ' ']: for s in ['.', '-', '\'', ' ']:
@ -44,6 +46,13 @@ def device_id_from_path(mock, path):
return device_id return device_id
return None return None
def profile_id_from_path(mock, path):
for profile_id in mock.profiles:
profile_path = mock.profiles[profile_id]
if profile_path == path:
return profile_id
return None
@dbus.service.method(MAIN_IFACE, in_signature='ssa{sv}', out_signature='o') @dbus.service.method(MAIN_IFACE, in_signature='ssa{sv}', out_signature='o')
def CreateDevice(self, device_id, scope, props): def CreateDevice(self, device_id, scope, props):
uid = os.getuid() uid = os.getuid()
@ -56,6 +65,7 @@ def CreateDevice(self, device_id, scope, props):
DEVICE_IFACE, DEVICE_IFACE,
{ {
'DeviceId': device_id, 'DeviceId': device_id,
'Enabled': True,
}, },
[]) [])
self.EmitSignal(MAIN_IFACE, 'DeviceAdded', 'o', [device_path]) self.EmitSignal(MAIN_IFACE, 'DeviceAdded', 'o', [device_path])
@ -74,8 +84,38 @@ def FindDeviceById(self, device_id):
return self.devices[device_id] return self.devices[device_id]
@dbus.service.method(MAIN_IFACE, in_signature='ssha{sv}', out_signature='o')
def CreateProfileWithFd(self, profile_id, scope, handle, props):
uid = os.getuid()
username = get_username(uid)
profile_path = PATH_PREFIX + '/profiles/' + \
escape_unit_name(profile_id) + \
'_' + username + '_' + str(uid)
self.profiles[profile_id] = profile_path
self.AddObject(profile_path,
PROFILE_IFACE,
{
'ProfileId': profile_id,
'Enabled': True,
'Filename': props['Filename'],
},
[])
self.EmitSignal(MAIN_IFACE, 'ProfileAdded', 'o', [profile_path])
return profile_path
@dbus.service.method(MAIN_IFACE, in_signature='o')
def DeleteProfile(self, profile_path):
self.RemoveObject(profile_path)
profile_id = profile_id_from_path(self, profile_path)
del self.profiles[profile_id]
self.EmitSignal(MAIN_IFACE, 'ProfileRemoved', 'o', [profile_path])
@dbus.service.method(MOCK_IFACE) @dbus.service.method(MOCK_IFACE)
def ClearDevices(self): def Reset(self):
for device_path in self.devices.values(): for device_path in self.devices.values():
self.RemoveObject(device_path) self.RemoveObject(device_path)
self.devices = {} self.devices = {}
for profile_path in self.profiles.values():
self.RemoveObject(profile_path)
self.profiles = {}

View File

@ -389,7 +389,7 @@ meta_context_test_init (MetaContextTest *context_test)
} }
if (!g_dbus_proxy_call_sync (proxy, if (!g_dbus_proxy_call_sync (proxy,
"ClearDevices", "Reset",
NULL, NULL,
G_DBUS_CALL_FLAGS_NO_AUTO_START, -1, NULL, G_DBUS_CALL_FLAGS_NO_AUTO_START, -1, NULL,
&error)) &error))