Commit dde54b94 authored by Heidi Fahim's avatar Heidi Fahim Committed by Shuah Khan

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: default avatarHeidi Fahim <heidifahim@google.com>
Reviewed-by: default avatarBrendan Higgins <brendanhiggins@google.com>
Tested-by: default avatarBrendan Higgins <brendanhiggins@google.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent e20d8e81
...@@ -93,6 +93,20 @@ class LinuxSourceTree(object): ...@@ -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): ...@@ -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): ...@@ -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'])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment