87a5b117a1
Python 3.x is patched in a way that integrates `.hy` source files into Pythons default `importlib` machinery. In Python 2.7, a PEP-302 "importer" and "loader" is implemented according to the standard `import` logic (via `pkgutil` and later pure-Python `imp` package code). In both cases, the entry-point for the loaders is through `sys.path_hooks` only. As well, the import semantics have been updated all throughout to utilize `importlib` and follow aspects of PEP-420. This, along with some light patches, should allow for basic use of `runpy`, `py_compile` and `reload`. In all cases, if a `.hy` file is shadowed by a `.py`, Hy will silently use `.hy`.
26 lines
568 B
Python
26 lines
568 B
Python
# Copyright 2018 the authors.
|
|
# This file is part of Hy, which is free software licensed under the Expat
|
|
# license. See the LICENSE.
|
|
|
|
import os
|
|
import imp
|
|
import tempfile
|
|
|
|
import py_compile
|
|
|
|
|
|
def test_pyc():
|
|
"""Test pyc compilation."""
|
|
with tempfile.NamedTemporaryFile(suffix='.hy') as f:
|
|
f.write(b'(defn pyctest [s] (+ "X" s "Y"))')
|
|
f.flush()
|
|
|
|
cfile = py_compile.compile(f.name)
|
|
|
|
assert os.path.exists(cfile)
|
|
|
|
mod = imp.load_compiled('pyc', cfile)
|
|
os.remove(cfile)
|
|
|
|
assert mod.pyctest('Foo') == 'XFooY'
|