summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilosz Wasilewski <milosz.wasilewski@linaro.org>2016-01-19 10:47:11 +0000
committerMilosz Wasilewski <milosz.wasilewski@linaro.org>2016-01-19 10:47:11 +0000
commite4c4f9817dd80636ef3a8006eda6afb8e9c5a7fa (patch)
tree6b985c4f034ef12c62b7ef803c1f54ebb513b68e
parentedb5b9ebd99252a9d8228bc810504815d06d2293 (diff)
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 <milosz.wasilewski@linaro.org>
-rw-r--r--test-definitions-ci.py36
1 files changed, 36 insertions, 0 deletions
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