diff --git a/frappy/modules.py b/frappy/modules.py index fa169d2..20ca29a 100644 --- a/frappy/modules.py +++ b/frappy/modules.py @@ -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 diff --git a/test/test_modules.py b/test/test_modules.py index f801004..2f47f5b 100644 --- a/test/test_modules.py +++ b/test/test_modules.py @@ -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