From 45dd14a72caa86c133d1e6201e9cb2fe19393be1 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Wed, 10 Nov 2021 15:29:55 +0100 Subject: [PATCH] fix feature for removing commands from a bug introduced in the 'fix parameter inheritance' change Change-Id: I757c354130077d8838aac864b21b4f81caa9bccf Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27096 Tested-by: Jenkins Automated Tests Reviewed-by: Enrico Faulhaber Reviewed-by: Markus Zolliker --- secop/modules.py | 8 ++++++-- test/test_modules.py | 13 +++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/secop/modules.py b/secop/modules.py index 4f48517..2bb00f3 100644 --- a/secop/modules.py +++ b/secop/modules.py @@ -68,11 +68,15 @@ class HasAccessibles(HasProperties): override_values.pop(key, None) elif key in accessibles: override_values[key] = value - for aname, aobj in accessibles.items(): + for aname, aobj in list(accessibles.items()): if aname in override_values: aobj = aobj.copy() + value = override_values[aname] + if value is None: + accessibles.pop(aname) + continue aobj.merge(merged_properties[aname]) - aobj.override(override_values[aname]) + aobj.override(value) # replace the bare value by the created accessible setattr(cls, aname, aobj) else: diff --git a/test/test_modules.py b/test/test_modules.py index 22bbeeb..66b1b3f 100644 --- a/test/test_modules.py +++ b/test/test_modules.py @@ -346,3 +346,16 @@ def test_command_config(): 'argument': {'type': 'bool'}, 'result': {'type': 'bool'}, } + + +def test_command_none(): + srv = ServerStub({}) + + class Mod(Drivable): + pass + + class Mod2(Drivable): + stop = None + + assert 'stop' in Mod('o', logger, {'description': ''}, srv).accessibles + assert 'stop' not in Mod2('o', logger, {'description': ''}, srv).accessibles