fix(undulator): remove raise for operator controlled pvs, log instead and return None

This commit is contained in:
2025-08-05 12:38:28 +02:00
committed by Christian Appel
parent 5ca3a0e1d8
commit 87e226804e
2 changed files with 8 additions and 3 deletions

View File

@@ -45,9 +45,10 @@ class UndulatorEpicsSignal(EpicsSignal):
If the undulator is operator controlled, it will not move. If the undulator is operator controlled, it will not move.
""" """
if self.parent.select_control.get() == UNDULATORCONTROL.OPERATOR.value: if self.parent.select_control.get() == UNDULATORCONTROL.OPERATOR.value:
raise PermissionError( logger.error(
f"Cannot use put for signal {self.name}; Undulator is operator controlled!" f"Cannot use put for signal {self.name}; Undulator is operator controlled!"
) )
return # Do not raise an error, just log it and return None.
return super().put( return super().put(
value, value,
force=force, force=force,

View File

@@ -56,7 +56,11 @@ def test_undulator_raises_when_disabled(mock_undulator):
def test_undulator_stop_call(mock_undulator): def test_undulator_stop_call(mock_undulator):
mock_undulator.select_control._read_pv.mock_data = 1 mock_undulator.select_control._read_pv.mock_data = 1
mock_undulator.stop_signal.put(0)
mock_undulator.stop() mock_undulator.stop()
assert mock_undulator.stop_signal.get() == 1
mock_undulator.stop_signal.put(0)
mock_undulator.select_control._read_pv.mock_data = 0 mock_undulator.select_control._read_pv.mock_data = 0
with pytest.raises(PermissionError) as e: # Error should just be logged, not raised.
mock_undulator.stop() mock_undulator.stop()
assert mock_undulator.stop_signal.get() == 0