diff --git a/src/openflexure_microscope_server/things/stage/sangaboard.py b/src/openflexure_microscope_server/things/stage/sangaboard.py index acfa7bff..84d75e92 100644 --- a/src/openflexure_microscope_server/things/stage/sangaboard.py +++ b/src/openflexure_microscope_server/things/stage/sangaboard.py @@ -44,12 +44,12 @@ class SangaboardThing(BaseStage): """ self.sangaboard_kwargs = copy(kwargs) self.sangaboard_kwargs["port"] = port + self._sangaboard_lock = threading.RLock() super().__init__(**kwargs) def __enter__(self) -> None: """Connect to the sangaboard when the Thing context manager is opened.""" self._sangaboard = sangaboard.Sangaboard(**self.sangaboard_kwargs) - self._sangaboard_lock = threading.RLock() with self.sangaboard() as sb: sb.query("blocking_moves false") self.check_firmware() diff --git a/tests/test_sangaboard.py b/tests/test_sangaboard.py new file mode 100644 index 00000000..bf1c8394 --- /dev/null +++ b/tests/test_sangaboard.py @@ -0,0 +1,20 @@ +"""Tests for the Sangaboard thing.""" + +import pytest + +from openflexure_microscope_server.things.stage.sangaboard import SangaboardThing + + +@pytest.fixture +def mock_sanga_thing(mocker): + """Return a Sangaboard thing with a MagicMock for self._sangaboard.""" + sanga_thing = SangaboardThing() + sanga_thing._sangaboard = mocker.MagicMock() + return sanga_thing + + +def test_check_old_firmware(mock_sanga_thing): + """Check firmware prior to version 1 throws a Runtime Error.""" + mock_sanga_thing._sangaboard.firmware_version.return_value = "0.1.1" + with pytest.raises(RuntimeError): + mock_sanga_thing.check_firmware()