diff --git a/qubesadmin/device_protocol.py b/qubesadmin/device_protocol.py index 06306cda..10f5c6e7 100644 --- a/qubesadmin/device_protocol.py +++ b/qubesadmin/device_protocol.py @@ -1367,7 +1367,9 @@ def device(self) -> DeviceInfo: return devices[0] if len(devices) > 1: raise ProtocolError("Too many devices matches to assignment") - raise ProtocolError("No devices matches to assignment") + return UnknownDevice(port=self.port, + device_id=self.device_id, + attachment=self) @property def port(self) -> Port: diff --git a/qubesadmin/tests/mock_app.py b/qubesadmin/tests/mock_app.py index 6577563a..00f49013 100644 --- a/qubesadmin/tests/mock_app.py +++ b/qubesadmin/tests/mock_app.py @@ -691,6 +691,7 @@ def __init__( vendor: str, attached: Optional[str] = None, assigned: Optional[List[Tuple[str, str, list[Any] | None]]] = None, + device_unknown: bool = False, ): """ :param qapp: QubesTest object @@ -712,6 +713,7 @@ def __init__( self.assigned = assigned self.product = product self.vendor = vendor + self.device_unknown = device_unknown self.interface = self.device_id.split(":")[-1] @@ -761,16 +763,17 @@ def update_calls(self): ) ] - self.qapp.expected_calls[ - ( - self.backend_vm, - f"admin.vm.device.{self.dev_class}.Available", - None, - None, + if not self.device_unknown: + self.qapp.expected_calls[ + ( + self.backend_vm, + f"admin.vm.device.{self.dev_class}.Available", + None, + None, + ) + ] = ( + current_response + self.device_string().encode() ) - ] = ( - current_response + self.device_string().encode() - ) if self.attached: current_response = self.qapp.expected_calls[