From e4c4f9817dd80636ef3a8006eda6afb8e9c5a7fa Mon Sep 17 00:00:00 2001 From: Milosz Wasilewski Date: Tue, 19 Jan 2016 10:47:11 +0000 Subject: Added metadata check for YAML files Metadata needs to contain the following mandatory sections: * name * format * description * maintainer * os * scope * devices Signed-off-by: Milosz Wasilewski --- test-definitions-ci.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test-definitions-ci.py b/test-definitions-ci.py index 23a0efa..40b0572 100644 --- a/test-definitions-ci.py +++ b/test-definitions-ci.py @@ -52,6 +52,41 @@ def pep8_check(filepath, ignore_options=None): }) publish_result(result_message_list) +def metadata_check(filepath): + if filepath.lower().endswith("yaml"): + with open(filepath, "r") as f: + result_message_list = [] + y = yaml.load(f.read()) + if not 'metadata' in y.keys(): + result_message_list.append("* METADATA [FAILED]: " + filepath) + result_message_list.append("\tmetadata section missing") + publish_result(result_message_list) + exit(1) + metadata_dict = y['metadata'] + mandatory_keys = set([ + 'name', + 'format', + 'description', + 'maintainer', + 'os', + 'scope', + 'devices']) + if not mandatory_keys.issubset(set(metadata_dict.keys())): + result_message_list.append("* METADATA [FAILED]: " + filepath) + result_message_list.append("\tmandatory keys missing: %s" % \ + mandatory_keys.difference(set(metadata_dict.keys()))) + result_message_list.append("\tactual keys present: %s" % \ + metadata_dict.keys()) + publish_result(result_message_list) + exit(1) + for key in mandatory_keys: + if len(metadata_dict[key]) == 0: + result_message_list.append("* METADATA [FAILED]: " + filepath) + result_message_list.append("\t%s has no content" % key) + publish_result(result_message_list) + exit(1) + result_message_list.append("* METADATA [PASSED]: " + filepath) + publish_result(result_message_list) def validate_yaml(filename): with open(filename, "r") as f: @@ -93,6 +128,7 @@ def run_unit_tests(ignore_options): for name in files: if name.endswith("yaml"): validate_yaml(root + "/" + name) + metadata_check(root + "/" + name) if run_pep8 and name.endswith("py"): pep8_check(root + "/" + name, ignore_options) # disable checkbashisms for now -- cgit v1.2.3