diff options
author | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2017-10-20 14:04:52 +0100 |
---|---|---|
committer | Milosz Wasilewski <milosz.wasilewski@linaro.org> | 2017-10-22 16:26:02 +0100 |
commit | c69b40979ee7d84dc2b7e061313ac07d49e95e62 (patch) | |
tree | a98a35d43798f348fe9cc211168638a5b8a92d16 /validate.py | |
parent | 920fca1f08e39e014414a3c8d105c0f3ab49b3a3 (diff) |
validate.py: fix the case when file were deleted
Change-Id: I718ebedffffd57383d81131732ff7df764f0752e
Signed-off-by: Milosz Wasilewski <milosz.wasilewski@linaro.org>
Diffstat (limited to 'validate.py')
-rwxr-xr-x | validate.py | 100 |
1 files changed, 56 insertions, 44 deletions
diff --git a/validate.py b/validate.py index 54edb75..3f127c4 100755 --- a/validate.py +++ b/validate.py @@ -64,57 +64,69 @@ def pep8_check(filepath, args): def metadata_check(filepath, args): if filepath.lower().endswith("yaml"): - with open(filepath, "r") as f: - result_message_list = [] - y = yaml.load(f.read()) - if 'metadata' not in y.keys(): - result_message_list.append("* METADATA [FAILED]: " + filepath) - result_message_list.append("\tmetadata section missing") - publish_result(result_message_list, args) - exit(1) - metadata_dict = y['metadata'] - mandatory_keys = set([ - 'name', - 'format', - 'description', - 'maintainer', - 'os', - 'devices']) - if not mandatory_keys.issubset(set(metadata_dict.keys())): + filecontent = None + try: + with open(filepath, "r") as f: + filecontent = f.read() + except FileNotFoundError: + publish_result(["* METADATA [PASSED]: " + filepath + " - deleted"], args) + return 0 + result_message_list = [] + y = yaml.load(filecontent) + if 'metadata' not in y.keys(): + result_message_list.append("* METADATA [FAILED]: " + filepath) + result_message_list.append("\tmetadata section missing") + publish_result(result_message_list, args) + exit(1) + metadata_dict = y['metadata'] + mandatory_keys = set([ + 'name', + 'format', + 'description', + 'maintainer', + 'os', + '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, args) + return 1 + for key in mandatory_keys: + if len(metadata_dict[key]) == 0: 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()) + result_message_list.append("\t%s has no content" % key) publish_result(result_message_list, args) return 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, args) - return 1 - result_message_list.append("* METADATA [PASSED]: " + filepath) - publish_result(result_message_list, args) + result_message_list.append("* METADATA [PASSED]: " + filepath) + publish_result(result_message_list, args) return 0 def validate_yaml(filename, args): - with open(filename, "r") as f: - try: - y = yaml.load(f.read()) - message = "* YAMLVALID: [PASSED]: " + filename - print_stderr(message) - except: - message = "* YAMLVALID: [FAILED]: " + filename - result_message_list = [] - result_message_list.append(message) - result_message_list.append("\n\n") - exc_type, exc_value, exc_traceback = sys.exc_info() - for line in traceback.format_exception_only(exc_type, exc_value): - result_message_list.append(' ' + line) - publish_result(result_message_list, args) - return 1 + filecontent = None + try: + with open(filename, "r") as f: + filecontent = f.read() + except FileNotFoundError: + publish_result(["* YAMLVALID [PASSED]: " + filename + " - deleted"], args) + return 0 + try: + y = yaml.load(filecontent) + message = "* YAMLVALID: [PASSED]: " + filename + print_stderr(message) + except: + message = "* YAMLVALID: [FAILED]: " + filename + result_message_list = [] + result_message_list.append(message) + result_message_list.append("\n\n") + exc_type, exc_value, exc_traceback = sys.exc_info() + for line in traceback.format_exception_only(exc_type, exc_value): + result_message_list.append(' ' + line) + publish_result(result_message_list, args) + return 1 return 0 |