Fix ansible-test handling of import/syntax errors.

This commit is contained in:
Matt Clay 2017-04-07 10:01:15 -07:00
parent 3648e6fd2b
commit 0cf1e8e061

View file

@ -156,11 +156,10 @@ def extract_python_module_utils_imports(path, module_utils):
try: try:
tree = ast.parse(code) tree = ast.parse(code)
except SyntaxError as ex: except SyntaxError as ex:
# Setting the full path to the filename results in only the filename being given for str(ex). # Treat this error as a warning so tests can be executed as best as possible.
# As a work-around, set the filename to a UUID and replace it in the final string output with the actual path. # The compile test will detect and report this syntax error.
ex.filename = str(uuid.uuid4()) display.warning('%s:%s Syntax error extracting module_utils imports: %s' % (path, ex.lineno, ex.msg))
error = str(ex).replace(ex.filename, path) return set()
raise ApplicationError('AST parse error: %s' % error)
finder = ModuleUtilFinder(path, module_utils) finder = ModuleUtilFinder(path, module_utils)
finder.visit(tree) finder.visit(tree)
@ -239,4 +238,6 @@ class ModuleUtilFinder(ast.NodeVisitor):
if self.path.startswith('test/'): if self.path.startswith('test/'):
return # invalid imports in tests are ignored return # invalid imports in tests are ignored
raise ApplicationError('%s:%d Invalid module_utils import: %s' % (self.path, line_number, import_name)) # Treat this error as a warning so tests can be executed as best as possible.
# This error should be detected by unit or integration tests.
display.warning('%s:%d Invalid module_utils import: %s' % (self.path, line_number, import_name))