xonsh/tests/test_ptk_history.py
2020-08-26 10:10:59 -05:00

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]