treat returning None from write_<param> properly
as intended originally, returning None should be the same as returning the new value from the argument Change-Id: I5596d2b6f6f525efd4dc410bbe22dad6f1fb2017 Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30659 Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de> Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de> Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
parent
644bfa85f7
commit
80b1932f39
@ -164,8 +164,9 @@ class HasAccessibles(HasProperties):
|
||||
new_value = wfunc(self, new_value)
|
||||
self.log.debug('write_%s(%r) returned %r', pname, value, new_value)
|
||||
if new_value is Done:
|
||||
# setattr(self, pname, getattr(self, pname))
|
||||
return getattr(self, pname)
|
||||
if new_value is None:
|
||||
new_value = value
|
||||
setattr(self, pname, new_value) # important! trigger the setter
|
||||
return new_value
|
||||
|
||||
|
@ -727,3 +727,15 @@ def test_super_call():
|
||||
|
||||
assert type(m).__name__ == '_Mod'
|
||||
assert type(m).__mro__[1:5] == (Mod, Base, Readable, Module)
|
||||
|
||||
|
||||
def test_write_method_returns_none():
|
||||
class Mod(Module):
|
||||
a = Parameter('', FloatRange(), readonly=False)
|
||||
|
||||
def write_a(self, value):
|
||||
return None
|
||||
|
||||
mod = Mod('mod', LoggerStub(), {'description': ''}, ServerStub({}))
|
||||
mod.write_a(1.5)
|
||||
assert mod.a == 1.5
|
||||
|
Loading…
x
Reference in New Issue
Block a user