xonsh/tests/test_xontribs.py
anki-code 3e59c45653
xonfig xontribs (#3894)
* xonfig xontribs

* news

* news

* black

* v2

* v2

* v2

* simpler condition

* xontribs_loaded

* isinstance

* test

* v3

Co-authored-by: a <a>
2020-10-19 11:48:55 -04:00

108 lines
2.2 KiB
Python

"""xontrib tests, such as they are"""
import sys
import pytest
from xonsh.xontribs import xontrib_metadata, xontrib_context, xontribs_load, xontribs_loaded
def test_load_xontrib_metadata():
# Simply tests that the xontribs JSON files isn't malformed.
xontrib_metadata()
@pytest.fixture
def tmpmod(tmpdir):
"""
Same as tmpdir but also adds/removes it to the front of sys.path.
Also cleans out any modules loaded as part of the test.
"""
sys.path.insert(0, str(tmpdir))
loadedmods = set(sys.modules.keys())
try:
yield tmpdir
finally:
del sys.path[0]
newmods = set(sys.modules.keys()) - loadedmods
for m in newmods:
del sys.modules[m]
def test_noall(tmpmod):
"""
Tests what get's exported from a module without __all__
"""
with tmpmod.mkdir("xontrib").join("spameggs.py").open("w") as x:
x.write(
"""
spam = 1
eggs = 2
_foobar = 3
"""
)
ctx = xontrib_context("spameggs")
assert ctx == {"spam": 1, "eggs": 2}
def test_withall(tmpmod):
"""
Tests what get's exported from a module with __all__
"""
with tmpmod.mkdir("xontrib").join("spameggs.py").open("w") as x:
x.write(
"""
__all__ = 'spam', '_foobar'
spam = 1
eggs = 2
_foobar = 3
"""
)
ctx = xontrib_context("spameggs")
assert ctx == {"spam": 1, "_foobar": 3}
def test_xshxontrib(tmpmod):
"""
Test that .xsh xontribs are loadable
"""
with tmpmod.mkdir("xontrib").join("script.xsh").open("w") as x:
x.write(
"""
hello = 'world'
"""
)
ctx = xontrib_context("script")
assert ctx == {"hello": "world"}
def test_xontrib_load(tmpmod):
"""
Test that .xsh xontribs are loadable
"""
with tmpmod.mkdir("xontrib").join("script.xsh").open("w") as x:
x.write(
"""
hello = 'world'
"""
)
xontribs_load(["script"])
assert 'script' in xontribs_loaded()
def test_xontrib_load_dashed(tmpmod):
"""
Test that .xsh xontribs are loadable
"""
with tmpmod.mkdir("xontrib").join("scri-pt.xsh").open("w") as x:
x.write(
"""
hello = 'world'
"""
)
xontribs_load(["scri-pt"])
assert 'scri-pt' in xontribs_loaded()