From 5d325a515640da2db3b830ade9fff64355042165 Mon Sep 17 00:00:00 2001 From: "Brandon T. Willard" Date: Mon, 27 Aug 2018 00:28:02 -0500 Subject: [PATCH] Add a test for module docstrings --- hy/importer.py | 11 +++++------ tests/importer/test_importer.py | 13 +++++++++++++ tests/resources/importer/docstring.hy | 5 +++++ 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 tests/resources/importer/docstring.hy diff --git a/hy/importer.py b/hy/importer.py index 5cf743527..1ed6e7e74 100644 --- a/hy/importer.py +++ b/hy/importer.py @@ -256,8 +256,8 @@ def __init__(self, fullname, filename, fileobj=None, etc=None): def exec_module(self, module, fullname=None): fullname = self._fix_name(fullname) - ast = self.get_code(fullname) - eval(ast, module.__dict__) + code = self.get_code(fullname) + eval(code, module.__dict__) def load_module(self, fullname=None): """Same as `pkgutil.ImpLoader`, with an extra check for Hy @@ -287,7 +287,6 @@ def load_module(self, fullname=None): mod.__file__ = self.get_filename(fullname) mod.__package__ = '.'.join(fullname.split('.')[:-1]) - # TODO: Set `mod.__doc__`. mod.__name__ = fullname self.exec_module(mod, fullname=fullname) @@ -314,7 +313,6 @@ def _reopen(self): else: super(HyLoader, self)._reopen() - def byte_compile_hy(self, fullname=None): fullname = self._fix_name(fullname) if fullname is None: @@ -322,8 +320,9 @@ def byte_compile_hy(self, fullname=None): try: hy_source = self.get_source(fullname) hy_tree = hy_parse(hy_source) - ast = hy_compile(hy_tree, fullname) - code = compile(ast, self.filename, 'exec', + hy_ast = hy_compile(hy_tree, fullname) + + code = compile(hy_ast, self.filename, 'exec', hy_ast_compile_flags) except (HyTypeError, LexException) as e: if e.source is None: diff --git a/tests/importer/test_importer.py b/tests/importer/test_importer.py index bb92bceaa..900da0314 100644 --- a/tests/importer/test_importer.py +++ b/tests/importer/test_importer.py @@ -253,3 +253,16 @@ def test_shadowed_basename(): assert some_mod.ext == 'hy' finally: sys.path.pop(0) + + +def test_docstring(): + """Make sure a module's docstring is loaded.""" + sys.path.insert(0, os.path.realpath('tests/resources/importer')) + try: + mod = importlib.import_module('docstring') + expected_doc = ("This module has a docstring.\n\n" + "It covers multiple lines, too!\n") + assert mod.__doc__ == expected_doc + assert mod.a == 1 + finally: + sys.path.pop(0) diff --git a/tests/resources/importer/docstring.hy b/tests/resources/importer/docstring.hy new file mode 100644 index 000000000..87d18b222 --- /dev/null +++ b/tests/resources/importer/docstring.hy @@ -0,0 +1,5 @@ +"This module has a docstring. + +It covers multiple lines, too! +" +(setv a 1)