Skip to content

Commit

Permalink
Drop variant wrapping from all properties
Browse files Browse the repository at this point in the history
The previous commit only fixed the bluez template, but this was a
general misunderstanding of how D-Bus properties work. They are defined
as variants, but the API already wraps/unwraps them.
  • Loading branch information
martinpitt committed Aug 12, 2024
1 parent 9e099ca commit 118b73e
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 80 deletions.
2 changes: 1 addition & 1 deletion dbusmock/mockobject.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ def AddObject(self, path: str, interface: str, properties: PropsType, methods: L
dbus_proxy.AddObject('/com/example/Foo/Manager',
'com.example.Foo.Control',
{
'state': dbus.String('online', variant_level=1),
'state': dbus.String('online'),
},
[
('Start', '', '', ''),
Expand Down
26 changes: 13 additions & 13 deletions dbusmock/templates/bluez5-obex.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,11 @@ def CreateSession(self, destination, args):

path = client_path + "/session" + str(session_id)
properties = {
"Source": dbus.String("FIXME", variant_level=1),
"Destination": dbus.String(destination, variant_level=1),
"Channel": dbus.Byte(0, variant_level=1),
"Target": dbus.String("FIXME", variant_level=1),
"Root": dbus.String("FIXME", variant_level=1),
"Source": dbus.String("FIXME"),
"Destination": dbus.String(destination),
"Channel": dbus.Byte(0),
"Target": dbus.String("FIXME"),
"Root": dbus.String("FIXME"),
}

self.AddObject(
Expand Down Expand Up @@ -213,11 +213,11 @@ def PullAll(self, target_file, filters):
filename = Path(temp_file.name).resolve()

props = {
"Status": dbus.String("queued", variant_level=1),
"Session": dbus.ObjectPath(session_path, variant_level=1),
"Name": dbus.String(target_file, variant_level=1),
"Filename": dbus.String(filename, variant_level=1),
"Transferred": dbus.UInt64(0, variant_level=1),
"Status": dbus.String("queued"),
"Session": dbus.ObjectPath(session_path),
"Name": dbus.String(target_file),
"Filename": dbus.String(filename),
"Transferred": dbus.UInt64(0),
}

self.AddObject(
Expand Down Expand Up @@ -299,7 +299,7 @@ def UpdateStatus(self, is_complete):
transferred = Path(self.props[TRANSFER_IFACE]["Filename"]).stat().st_size

self.props[TRANSFER_IFACE]["Status"] = status
self.props[TRANSFER_IFACE]["Transferred"] = dbus.UInt64(transferred, variant_level=1)
self.props[TRANSFER_IFACE]["Transferred"] = dbus.UInt64(transferred)

self.EmitSignal(
dbus.PROPERTIES_IFACE,
Expand All @@ -308,8 +308,8 @@ def UpdateStatus(self, is_complete):
[
TRANSFER_IFACE,
{
"Status": dbus.String(status, variant_level=1),
"Transferred": dbus.UInt64(transferred, variant_level=1),
"Status": dbus.String(status),
"Transferred": dbus.UInt64(transferred),
},
[],
],
Expand Down
2 changes: 1 addition & 1 deletion dbusmock/templates/modemmanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ def AddSimpleModem(self):
self.AddObject(modem_path, MODEM_IFACE, modem_props, [])

modem_3gpp_props = {
"Imei": dbus.String("doesnotmatter", variant_level=1),
"Imei": dbus.String("doesnotmatter"),
"OperatorName": dbus.String("TheOperator"),
"Pco": dbus.Array([], signature="(ubay)"),
}
Expand Down
8 changes: 3 additions & 5 deletions dbusmock/templates/networkmanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,20 +285,18 @@ def SetProperty(_self, path, iface, name, value):

@dbus.service.method(MOCK_IFACE, in_signature="u", out_signature="")
def SetGlobalConnectionState(self, state):
self.SetProperty(MANAGER_OBJ, MANAGER_IFACE, "State", dbus.UInt32(state, variant_level=1))
self.SetProperty(MANAGER_OBJ, MANAGER_IFACE, "State", dbus.UInt32(state))
self.EmitSignal(MANAGER_IFACE, "StateChanged", "u", [state])


@dbus.service.method(MOCK_IFACE, in_signature="u", out_signature="")
def SetConnectivity(self, connectivity):
self.SetProperty(MANAGER_OBJ, MANAGER_IFACE, "Connectivity", dbus.UInt32(connectivity, variant_level=1))
self.SetProperty(MANAGER_OBJ, MANAGER_IFACE, "Connectivity", dbus.UInt32(connectivity))


@dbus.service.method(MOCK_IFACE, in_signature="b", out_signature="")
def SetNetworkingEnabled(self, networking_enabled):
self.SetProperty(
MANAGER_OBJ, MANAGER_IFACE, "NetworkingEnabled", dbus.Boolean(networking_enabled, variant_level=1)
)
self.SetProperty(MANAGER_OBJ, MANAGER_IFACE, "NetworkingEnabled", dbus.Boolean(networking_enabled))


@dbus.service.method(MOCK_IFACE, in_signature="ss", out_signature="")
Expand Down
32 changes: 16 additions & 16 deletions dbusmock/templates/ofono.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,15 @@ def AddModem(self, name, _properties):
path,
"org.ofono.Modem",
{
"Online": dbus.Boolean(True, variant_level=1),
"Powered": dbus.Boolean(True, variant_level=1),
"Lockdown": dbus.Boolean(False, variant_level=1),
"Emergency": dbus.Boolean(False, variant_level=1),
"Manufacturer": dbus.String("Fakesys", variant_level=1),
"Model": dbus.String("Mock Modem", variant_level=1),
"Revision": dbus.String("0815.42", variant_level=1),
"Serial": dbus.String(new_modem_serial(self), variant_level=1),
"Type": dbus.String("hardware", variant_level=1),
"Online": dbus.Boolean(True),
"Powered": dbus.Boolean(True),
"Lockdown": dbus.Boolean(False),
"Emergency": dbus.Boolean(False),
"Manufacturer": dbus.String("Fakesys"),
"Model": dbus.String("Mock Modem"),
"Revision": dbus.String("0815.42"),
"Serial": dbus.String(new_modem_serial(self)),
"Type": dbus.String("hardware"),
"Interfaces": [
"org.ofono.CallVolume",
"org.ofono.VoiceCallManager",
Expand Down Expand Up @@ -220,13 +220,13 @@ def Dial(self, number, _hide_callerid):
path,
"org.ofono.VoiceCall",
{
"State": dbus.String("dialing", variant_level=1),
"LineIdentification": dbus.String(number, variant_level=1),
"Name": dbus.String("", variant_level=1),
"Multiparty": dbus.Boolean(False, variant_level=1),
"RemoteHeld": dbus.Boolean(False, variant_level=1),
"RemoteMultiparty": dbus.Boolean(False, variant_level=1),
"Emergency": dbus.Boolean(False, variant_level=1),
"State": dbus.String("dialing"),
"LineIdentification": dbus.String(number),
"Name": dbus.String(""),
"Multiparty": dbus.Boolean(False),
"RemoteHeld": dbus.Boolean(False),
"RemoteMultiparty": dbus.Boolean(False),
"Emergency": dbus.Boolean(False),
},
[
("GetProperties", "", "a{sv}", 'ret = self.GetAll("org.ofono.VoiceCall")'),
Expand Down
2 changes: 1 addition & 1 deletion dbusmock/templates/polkitd.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def load(mock, _parameters):
{
"BackendName": "local",
"BackendVersion": "0.8.15",
"BackendFeatures": dbus.UInt32(1, variant_level=1),
"BackendFeatures": dbus.UInt32(1),
},
signature="sv",
),
Expand Down
64 changes: 32 additions & 32 deletions dbusmock/templates/upower.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,18 +73,18 @@ def load(mock, parameters):
mock.p_display_dev,
DEVICE_IFACE,
{
"Type": dbus.UInt32(0, variant_level=1),
"State": dbus.UInt32(0, variant_level=1),
"Percentage": dbus.Double(0.0, variant_level=1),
"Energy": dbus.Double(0.0, variant_level=1),
"EnergyFull": dbus.Double(0.0, variant_level=1),
"EnergyRate": dbus.Double(0.0, variant_level=1),
"TimeToEmpty": dbus.Int64(0, variant_level=1),
"TimeToFull": dbus.Int64(0, variant_level=1),
"IsPresent": dbus.Boolean(False, variant_level=1),
"IconName": dbus.String("", variant_level=1),
"Type": dbus.UInt32(0),
"State": dbus.UInt32(0),
"Percentage": dbus.Double(0.0),
"Energy": dbus.Double(0.0),
"EnergyFull": dbus.Double(0.0),
"EnergyRate": dbus.Double(0.0),
"TimeToEmpty": dbus.Int64(0),
"TimeToFull": dbus.Int64(0),
"IsPresent": dbus.Boolean(False),
"IconName": dbus.String(""),
# LEVEL_NONE
"WarningLevel": dbus.UInt32(1, variant_level=1),
"WarningLevel": dbus.UInt32(1),
},
[
("Refresh", "", "", ""),
Expand All @@ -111,9 +111,9 @@ def AddAC(self, device_name, model_name):
path,
DEVICE_IFACE,
{
"PowerSupply": dbus.Boolean(True, variant_level=1),
"Model": dbus.String(model_name, variant_level=1),
"Online": dbus.Boolean(True, variant_level=1),
"PowerSupply": dbus.Boolean(True),
"Model": dbus.String(model_name),
"Online": dbus.Boolean(True),
},
[],
)
Expand All @@ -139,17 +139,17 @@ def AddDischargingBattery(self, device_name, model_name, percentage, seconds_to_
path,
DEVICE_IFACE,
{
"PowerSupply": dbus.Boolean(True, variant_level=1),
"IsPresent": dbus.Boolean(True, variant_level=1),
"Model": dbus.String(model_name, variant_level=1),
"Percentage": dbus.Double(percentage, variant_level=1),
"TimeToEmpty": dbus.Int64(seconds_to_empty, variant_level=1),
"EnergyFull": dbus.Double(100.0, variant_level=1),
"Energy": dbus.Double(percentage, variant_level=1),
"PowerSupply": dbus.Boolean(True),
"IsPresent": dbus.Boolean(True),
"Model": dbus.String(model_name),
"Percentage": dbus.Double(percentage),
"TimeToEmpty": dbus.Int64(seconds_to_empty),
"EnergyFull": dbus.Double(100.0),
"Energy": dbus.Double(percentage),
# UP_DEVICE_STATE_DISCHARGING
"State": dbus.UInt32(2, variant_level=1),
"State": dbus.UInt32(2),
# UP_DEVICE_KIND_BATTERY
"Type": dbus.UInt32(2, variant_level=1),
"Type": dbus.UInt32(2),
},
[],
)
Expand All @@ -175,17 +175,17 @@ def AddChargingBattery(self, device_name, model_name, percentage, seconds_to_ful
path,
DEVICE_IFACE,
{
"PowerSupply": dbus.Boolean(True, variant_level=1),
"IsPresent": dbus.Boolean(True, variant_level=1),
"Model": dbus.String(model_name, variant_level=1),
"Percentage": dbus.Double(percentage, variant_level=1),
"TimeToFull": dbus.Int64(seconds_to_full, variant_level=1),
"EnergyFull": dbus.Double(100.0, variant_level=1),
"Energy": dbus.Double(percentage, variant_level=1),
"PowerSupply": dbus.Boolean(True),
"IsPresent": dbus.Boolean(True),
"Model": dbus.String(model_name),
"Percentage": dbus.Double(percentage),
"TimeToFull": dbus.Int64(seconds_to_full),
"EnergyFull": dbus.Double(100.0),
"Energy": dbus.Double(percentage),
# UP_DEVICE_STATE_CHARGING
"State": dbus.UInt32(1, variant_level=1),
"State": dbus.UInt32(1),
# UP_DEVICE_KIND_BATTERY
"Type": dbus.UInt32(2, variant_level=1),
"Type": dbus.UInt32(2),
},
[],
)
Expand Down
18 changes: 9 additions & 9 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,8 @@ def test_add_object(self):
"/obj1",
"org.freedesktop.Test.Sub",
{
"state": dbus.String("online", variant_level=1),
"cute": dbus.Boolean(True, variant_level=1),
"state": dbus.String("online"),
"cute": dbus.Boolean(True),
},
[],
)
Expand Down Expand Up @@ -276,8 +276,8 @@ def test_add_object_with_methods(self):
"/obj1",
"org.freedesktop.Test.Sub",
{
"state": dbus.String("online", variant_level=1),
"cute": dbus.Boolean(True, variant_level=1),
"state": dbus.String("online"),
"cute": dbus.Boolean(True),
},
[
("Do0", "", "i", "ret = 42"),
Expand Down Expand Up @@ -308,12 +308,12 @@ def test_properties(self):
self.dbus_props.Set,
"org.freedesktop.Test.Main",
"version",
dbus.Int32(2, variant_level=1),
dbus.Int32(2),
)

self.dbus_mock.AddProperty("org.freedesktop.Test.Main", "version", dbus.Int32(2, variant_level=1))
self.dbus_mock.AddProperty("org.freedesktop.Test.Main", "version", dbus.Int32(2))
# once again on default interface
self.dbus_mock.AddProperty("", "connected", dbus.Boolean(True, variant_level=1))
self.dbus_mock.AddProperty("", "connected", dbus.Boolean(True))

self.assertEqual(self.dbus_props.Get("org.freedesktop.Test.Main", "version"), 2)
self.assertEqual(self.dbus_props.Get("org.freedesktop.Test.Main", "connected"), True)
Expand All @@ -326,7 +326,7 @@ def test_properties(self):
self.assertEqual(ctx.exception.get_dbus_message(), "no such interface org.freedesktop.Test.Bogus")

# change property
self.dbus_props.Set("org.freedesktop.Test.Main", "version", dbus.Int32(4, variant_level=1))
self.dbus_props.Set("org.freedesktop.Test.Main", "version", dbus.Int32(4))
self.assertEqual(self.dbus_props.Get("org.freedesktop.Test.Main", "version"), 4)

# check that the Get/Set calls get logged
Expand All @@ -337,7 +337,7 @@ def test_properties(self):
self.assertRegex(log, "\n[0-9.]+ Set / org.freedesktop.Test.Main.version 4\n")

# add property to different interface
self.dbus_mock.AddProperty("org.freedesktop.Test.Other", "color", dbus.String("yellow", variant_level=1))
self.dbus_mock.AddProperty("org.freedesktop.Test.Other", "color", dbus.String("yellow"))

self.assertEqual(self.dbus_props.GetAll("org.freedesktop.Test.Main"), {"version": 4, "connected": True})
self.assertEqual(self.dbus_props.GetAll("org.freedesktop.Test.Other"), {"color": "yellow"})
Expand Down
2 changes: 1 addition & 1 deletion tests/test_networkmanager.py
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ def test_add_connection(self):

# Use the same settings, but this one will autoconnect.
uuid2 = "22222222-2222-2222-2222-222222222222"
settings["connection"]["autoconnect"] = dbus.Boolean(True, variant_level=1)
settings["connection"]["autoconnect"] = dbus.Boolean(True)
settings["connection"]["uuid"] = uuid2

con2 = self.settings.AddConnection(settings)
Expand Down
2 changes: 1 addition & 1 deletion tests/test_upower.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def test_one_ac(self):

with subprocess.Popen(["upower", "--monitor-detail"], stdout=subprocess.PIPE, universal_newlines=True) as mon:
time.sleep(0.3)
self.dbusmock.SetDeviceProperties(path, {"PowerSupply": dbus.Boolean(True, variant_level=1)})
self.dbusmock.SetDeviceProperties(path, {"PowerSupply": dbus.Boolean(True)})
time.sleep(0.2)

mon.terminate()
Expand Down

0 comments on commit 118b73e

Please sign in to comment.