diff --git a/labgrid/driver/qemudriver.py b/labgrid/driver/qemudriver.py index 1e32f3363..e93339ec0 100644 --- a/labgrid/driver/qemudriver.py +++ b/labgrid/driver/qemudriver.py @@ -367,7 +367,10 @@ def _write(self, data): return self._clientsocket.send(data) def __str__(self): - return f"QemuDriver({self.target.name})" + # self.target is None while binding is still in progress, so error + # messages raised during bind must not assume it is set + target_name = self.target.name if self.target is not None else None + return f"QemuDriver({target_name})" @Driver.check_active def interact(self): diff --git a/labgrid/driver/serialdriver.py b/labgrid/driver/serialdriver.py index 3b4d1f2b6..d8407df8c 100644 --- a/labgrid/driver/serialdriver.py +++ b/labgrid/driver/serialdriver.py @@ -115,4 +115,7 @@ def close(self): self.status = 0 def __str__(self): - return f"SerialDriver({self.target.name})" + # self.target is None while binding is still in progress, so error + # messages raised during bind must not assume it is set + target_name = self.target.name if self.target is not None else None + return f"SerialDriver({target_name})" diff --git a/tests/test_serialdriver.py b/tests/test_serialdriver.py index b762d154b..8e26f6b02 100644 --- a/tests/test_serialdriver.py +++ b/tests/test_serialdriver.py @@ -1,5 +1,6 @@ import pytest +from labgrid.binding import BindingError from labgrid.driver import SerialDriver from labgrid.exceptions import NoSupplierFoundError @@ -9,6 +10,12 @@ def test_instanziation_fail_missing_port(self, target): with pytest.raises(NoSupplierFoundError): SerialDriver(target, "serial") + def test_unexpected_binding_reports_binding_error(self, target, serial_port): + target.set_binding_map({"port": "serial", "unexpected": "foo"}) + with pytest.raises(BindingError) as excinfo: + SerialDriver(target, "serial") + assert "got unexpected bindings" in excinfo.value.msg + def test_instanziation(self, target, serial_port, mocker): serial_mock = mocker.patch("serial.Serial") s = SerialDriver(target, "serial")