xonsh/tests/completers/test_pip_completer.py
Noortheen Raja 78091a22f3 style: isort imports
fix #4584
2022-01-31 11:16:51 -05:00

61 lines
1.3 KiB
Python

import json
import subprocess
import pytest
from xonsh.completers.commands import complete_xompletions
regex_cases = [
"pip",
"pip.exe",
"pip3.6.exe",
"xpip",
]
@pytest.mark.parametrize(
"line",
regex_cases,
)
def test_pip_re(line):
assert complete_xompletions.matcher.search_completer(line)
@pytest.mark.parametrize(
"line",
[
"bagpipes show",
"toxbagpip uninstall",
"$(tompippery show",
"![thewholepipandpaboodle uninstall",
"$[littlebopip show",
"!(boxpip uninstall",
"pipx",
"vim pip_",
"pip_",
],
)
def test_pip_list_re1(line):
assert complete_xompletions.matcher.search_completer(line) is None
def pip_installed():
out = subprocess.check_output(["pip", "list", "--format=json"]).decode()
pkgs = json.loads(out)
return {p["name"] for p in pkgs}
@pytest.mark.parametrize(
"line, prefix, exp",
[
["pip", "c", {"cache", "check", "config"}],
["pip show", "", pip_installed],
],
)
def test_completions(line, prefix, exp, check_completer, xsh_with_env):
# use the actual PATH from os. Otherwise subproc will fail on windows. `unintialized python...`
comps = check_completer(line, prefix=prefix)
if callable(exp):
exp = exp()
assert comps.intersection(exp)