mirror of
https://github.com/daylinmorgan/viv.git
synced 2024-12-22 10:40:44 -06:00
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
|
import pytest
|
||
|
from viv.viv import _read_metadata_block, _uses_viv, _Viv_Mode
|
||
|
|
||
|
RUN_METADATA_SCRIPT = """
|
||
|
#!/usr/bin/env -S viv run -s
|
||
|
# /// script
|
||
|
# requires-python = ">3.10"
|
||
|
# dependencies = [
|
||
|
# "rich"
|
||
|
# ]
|
||
|
# ///
|
||
|
"""
|
||
|
|
||
|
USE_SCRIPT = """
|
||
|
#!/usr/bin/env python3
|
||
|
__import__("viv").use("rich")
|
||
|
|
||
|
from rich import print
|
||
|
print("pretty!")
|
||
|
"""
|
||
|
|
||
|
|
||
|
def test_metadata():
|
||
|
metadata = _read_metadata_block(RUN_METADATA_SCRIPT)
|
||
|
assert metadata == {"requires-python": ">3.10", "dependencies": ["rich"]}
|
||
|
|
||
|
|
||
|
def test_uses():
|
||
|
assert _uses_viv(RUN_METADATA_SCRIPT) == _Viv_Mode.NONE
|
||
|
assert (
|
||
|
_uses_viv(RUN_METADATA_SCRIPT + """\n__import__("viv").run()\n""")
|
||
|
== _Viv_Mode.RUN
|
||
|
)
|
||
|
assert _uses_viv(USE_SCRIPT) == _Viv_Mode.USE
|
||
|
assert _uses_viv("# from viv import use") == _Viv_Mode.NONE
|
||
|
|
||
|
|
||
|
def test_uses_fail(caplog):
|
||
|
with pytest.raises(SystemExit):
|
||
|
_uses_viv("""__import__("viv").run()\n__import__("viv").use()""")
|
||
|
with pytest.raises(SystemExit):
|
||
|
_uses_viv("""__import__("viv").unknown()""")
|
||
|
|
||
|
assert [
|
||
|
(
|
||
|
"viv",
|
||
|
40,
|
||
|
"Unexpected number of viv references in script.\n"
|
||
|
"Expected only 1, found: run, use",
|
||
|
),
|
||
|
("viv", 40, "Unknown function unknown associated with viv."),
|
||
|
] == caplog.record_tuples
|