# -*- coding: utf-8 -*- import os import ast import unittest from ansible import utils class TestModules(unittest.TestCase): def list_all_modules(self): paths = utils.plugins.module_finder._get_paths() paths = [x for x in paths if os.path.isdir(x)] module_list = [] for path in paths: for (dirpath, dirnames, filenames) in os.walk(path): for filename in filenames: (path, ext) = os.path.splitext(filename) if ext == ".py": module_list.append(os.path.join(dirpath, filename)) return module_list def test_ast_parse(self): module_list = self.list_all_modules() ERRORS = [] # attempt to parse each module with ast for m in module_list: try: ast.parse(''.join(open(m))) except Exception, e: ERRORS.append((m, e)) assert len(ERRORS) == 0, "get_docstring errors: %s" % ERRORS