Fix handling of ReaderError in validate-modules.

pull/18025/merge
Matt Clay 8 years ago
parent d1b41d8f9c
commit 65f019fe82

@ -41,6 +41,7 @@ from schema import doc_schema, option_schema
from utils import CaptureStd from utils import CaptureStd
import yaml import yaml
import yaml.reader
BLACKLIST_DIRS = frozenset(('.git', 'test', '.github', '.idea')) BLACKLIST_DIRS = frozenset(('.git', 'test', '.github', '.idea'))
@ -383,7 +384,7 @@ class ModuleValidator(Validator):
doc_info = self._get_docs() doc_info = self._get_docs()
try: try:
doc = yaml.safe_load(doc_info['DOCUMENTATION']['value']) doc = yaml.safe_load(doc_info['DOCUMENTATION']['value'])
except yaml.YAMLError as e: except yaml.MarkedYAMLError as e:
doc = None doc = None
# This offsets the error line number to where the # This offsets the error line number to where the
# DOCUMENTATION starts so we can just go to that line in the # DOCUMENTATION starts so we can just go to that line in the
@ -397,6 +398,13 @@ class ModuleValidator(Validator):
'column %d' % 'column %d' %
(e.problem_mark.line + 1, (e.problem_mark.line + 1,
e.problem_mark.column + 1)) e.problem_mark.column + 1))
except yaml.reader.ReaderError as e:
self.traces.append(e)
self.errors.append('DOCUMENTATION is not valid YAML. Character 0x%x at position %d.' %
(e.character, e.position))
except yaml.YAMLError as e:
self.traces.append(e)
self.errors.append('DOCUMENTATION is not valid YAML: %s: %s' % (type(e), e))
except AttributeError: except AttributeError:
self.errors.append('No DOCUMENTATION provided') self.errors.append('No DOCUMENTATION provided')
else: else:
@ -427,7 +435,7 @@ class ModuleValidator(Validator):
else: else:
try: try:
yaml.safe_load(doc_info['RETURN']['value']) yaml.safe_load(doc_info['RETURN']['value'])
except yaml.YAMLError as e: except yaml.MarkedYAMLError as e:
e.problem_mark.line += ( e.problem_mark.line += (
doc_info['RETURN']['lineno'] - 1 doc_info['RETURN']['lineno'] - 1
) )
@ -437,6 +445,13 @@ class ModuleValidator(Validator):
(e.problem_mark.line + 1, (e.problem_mark.line + 1,
e.problem_mark.column + 1)) e.problem_mark.column + 1))
self.traces.append(e) self.traces.append(e)
except yaml.reader.ReaderError as e:
self.traces.append(e)
self.errors.append('RETURN is not valid YAML. Character 0x%x at position %d.' %
(e.character, e.position))
except yaml.YAMLError as e:
self.traces.append(e)
self.errors.append('RETURN is not valid YAML: %s: %s' % (type(e), e))
def _check_version_added(self, doc): def _check_version_added(self, doc):
if not self._is_new_module(): if not self._is_new_module():

Loading…
Cancel
Save