Add a test for module docstrings

This commit is contained in:
Brandon T. Willard 2018-08-27 00:28:02 -05:00
parent 2ea1e8e017
commit 5d325a5156
3 changed files with 23 additions and 6 deletions

View File

@ -256,8 +256,8 @@ else:
def exec_module(self, module, fullname=None): def exec_module(self, module, fullname=None):
fullname = self._fix_name(fullname) fullname = self._fix_name(fullname)
ast = self.get_code(fullname) code = self.get_code(fullname)
eval(ast, module.__dict__) eval(code, module.__dict__)
def load_module(self, fullname=None): def load_module(self, fullname=None):
"""Same as `pkgutil.ImpLoader`, with an extra check for Hy """Same as `pkgutil.ImpLoader`, with an extra check for Hy
@ -287,7 +287,6 @@ else:
mod.__file__ = self.get_filename(fullname) mod.__file__ = self.get_filename(fullname)
mod.__package__ = '.'.join(fullname.split('.')[:-1]) mod.__package__ = '.'.join(fullname.split('.')[:-1])
# TODO: Set `mod.__doc__`.
mod.__name__ = fullname mod.__name__ = fullname
self.exec_module(mod, fullname=fullname) self.exec_module(mod, fullname=fullname)
@ -314,7 +313,6 @@ else:
else: else:
super(HyLoader, self)._reopen() super(HyLoader, self)._reopen()
def byte_compile_hy(self, fullname=None): def byte_compile_hy(self, fullname=None):
fullname = self._fix_name(fullname) fullname = self._fix_name(fullname)
if fullname is None: if fullname is None:
@ -322,8 +320,9 @@ else:
try: try:
hy_source = self.get_source(fullname) hy_source = self.get_source(fullname)
hy_tree = hy_parse(hy_source) hy_tree = hy_parse(hy_source)
ast = hy_compile(hy_tree, fullname) hy_ast = hy_compile(hy_tree, fullname)
code = compile(ast, self.filename, 'exec',
code = compile(hy_ast, self.filename, 'exec',
hy_ast_compile_flags) hy_ast_compile_flags)
except (HyTypeError, LexException) as e: except (HyTypeError, LexException) as e:
if e.source is None: if e.source is None:

View File

@ -253,3 +253,16 @@ def test_shadowed_basename():
assert some_mod.ext == 'hy' assert some_mod.ext == 'hy'
finally: finally:
sys.path.pop(0) 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)

View File

@ -0,0 +1,5 @@
"This module has a docstring.
It covers multiple lines, too!
"
(setv a 1)