kunit: tool: simplify kconfig is_subset_of() logic

Don't use an O(nm) algorithm* and make it more readable by using a dict.

*Most obviously, it does a nested for-loop over the entire other config.
A bit more subtle, it calls .entries(), which constructs a set from the
list for _every_ outer iteration.

Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Tested-by: Brendan Higgins <brendanhiggins@google.com>
Acked-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
Daniel Latypov 2020-12-08 15:21:02 -08:00 committed by Shuah Khan
parent cd4a9bc8e0
commit d3bae4a0b6
1 changed files with 6 additions and 7 deletions

View File

@ -41,15 +41,14 @@ class Kconfig(object):
self._entries.append(entry)
def is_subset_of(self, other: 'Kconfig') -> bool:
other_dict = {e.name: e.value for e in other.entries()}
for a in self.entries():
found = False
for b in other.entries():
if a.name != b.name:
b = other_dict.get(a.name)
if b is None:
if a.value == 'n':
continue
if a.value != b.value:
return False
found = True
if a.value != 'n' and found == False:
return False
elif a.value != b:
return False
return True