kunit: test: Improve error messages for kunit_tool when kunitconfig is invalid

Previous error message for invalid kunitconfig was vague. Added to it so
that it lists invalid fields and prompts for them to be removed.  Added
validate_config function returning whether or not this kconfig is valid.

Signed-off-by: Heidi Fahim <heidifahim@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Tested-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
Heidi Fahim 2019-11-26 14:36:16 -08:00 committed by Shuah Khan
parent e20d8e81a0
commit dde54b9492

View file

@ -93,6 +93,20 @@ class LinuxSourceTree(object):
return False return False
return True return True
def validate_config(self, build_dir):
kconfig_path = get_kconfig_path(build_dir)
validated_kconfig = kunit_config.Kconfig()
validated_kconfig.read_from_file(kconfig_path)
if not self._kconfig.is_subset_of(validated_kconfig):
invalid = self._kconfig.entries() - validated_kconfig.entries()
message = 'Provided Kconfig is not contained in validated .config. Following fields found in kunitconfig, ' \
'but not in .config: %s' % (
', '.join([str(e) for e in invalid])
)
logging.error(message)
return False
return True
def build_config(self, build_dir): def build_config(self, build_dir):
kconfig_path = get_kconfig_path(build_dir) kconfig_path = get_kconfig_path(build_dir)
if build_dir and not os.path.exists(build_dir): if build_dir and not os.path.exists(build_dir):
@ -103,12 +117,7 @@ class LinuxSourceTree(object):
except ConfigError as e: except ConfigError as e:
logging.error(e) logging.error(e)
return False return False
validated_kconfig = kunit_config.Kconfig() return self.validate_config(build_dir)
validated_kconfig.read_from_file(kconfig_path)
if not self._kconfig.is_subset_of(validated_kconfig):
logging.error('Provided Kconfig is not contained in validated .config!')
return False
return True
def build_reconfig(self, build_dir): def build_reconfig(self, build_dir):
"""Creates a new .config if it is not a subset of the .kunitconfig.""" """Creates a new .config if it is not a subset of the .kunitconfig."""
@ -133,12 +142,7 @@ class LinuxSourceTree(object):
except (ConfigError, BuildError) as e: except (ConfigError, BuildError) as e:
logging.error(e) logging.error(e)
return False return False
used_kconfig = kunit_config.Kconfig() return self.validate_config(build_dir)
used_kconfig.read_from_file(get_kconfig_path(build_dir))
if not self._kconfig.is_subset_of(used_kconfig):
logging.error('Provided Kconfig is not contained in final config!')
return False
return True
def run_kernel(self, args=[], timeout=None, build_dir=''): def run_kernel(self, args=[], timeout=None, build_dir=''):
args.extend(['mem=256M']) args.extend(['mem=256M'])