mirror of
https://github.com/xonsh/xonsh.git
synced 2025-03-04 08:24:40 +01:00
62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
import pytest
|
|
|
|
try:
|
|
import prompt_toolkit # NOQA
|
|
except ImportError:
|
|
pytest.mark.skip(msg="prompt_toolkit is not available")
|
|
|
|
|
|
@pytest.fixture
|
|
def history_obj():
|
|
"""Instantiate `PromptToolkitHistory` and append a line string"""
|
|
from xonsh.ptk_shell.history import PromptToolkitHistory
|
|
|
|
hist = PromptToolkitHistory(load_prev=False)
|
|
hist.append_string("line10")
|
|
return hist
|
|
|
|
|
|
def test_obj(history_obj):
|
|
assert ["line10"] == history_obj.get_strings()
|
|
assert len(history_obj) == 1
|
|
assert ["line10"] == [x for x in history_obj]
|
|
|
|
|
|
def test_ptk2_backcompat():
|
|
"""
|
|
Test that legacy code (ahem, xontribs) can still reference xonsh.ptk2 (for a while)
|
|
"""
|
|
|
|
import xonsh.ptk_shell.shell as imports_new
|
|
import xonsh.ptk2.shell as imports_legacy
|
|
|
|
# defining the ptk2 package this way leaves out the internal global names (which all start with '_')
|
|
|
|
s_new = set(dir(imports_new))
|
|
s_legacy = set(dir(imports_legacy))
|
|
extra_names = s_new - s_legacy
|
|
|
|
for name in extra_names:
|
|
assert name.startswith("_")
|
|
|
|
assert s_legacy.issubset(s_new)
|
|
|
|
|
|
# prove that legacy API is usable
|
|
|
|
|
|
@pytest.fixture
|
|
def history_obj_legacy():
|
|
"""Instantiate `PromptToolkitHistory` via legacy alias and append a line string"""
|
|
from xonsh.ptk2.history import PromptToolkitHistory
|
|
|
|
hist = PromptToolkitHistory(load_prev=False)
|
|
hist.append_string("line10")
|
|
return hist
|
|
|
|
|
|
def test_obj_legacy(history_obj_legacy):
|
|
history_obj = history_obj_legacy
|
|
assert ["line10"] == history_obj.get_strings()
|
|
assert len(history_obj) == 1
|
|
assert ["line10"] == [x for x in history_obj]
|