xonsh/tests/test_man.py
2022-03-24 19:49:30 +05:30

107 lines
2.8 KiB
Python

import os
import subprocess
import pytest # noqa F401
from xonsh.completers.man import complete_from_man
from xonsh.pytest.tools import skip_if_not_on_darwin, skip_if_on_windows
@skip_if_on_windows
@pytest.mark.parametrize(
"cmd,exp",
[
[
"yes",
{"--version", "--help"},
],
[
"man",
{
"--all",
"--apropos",
"--ascii",
"--catman",
"--config-file",
"--debug",
"--default",
"--ditroff",
"--encoding",
"--extension",
"--global-apropos",
"--gxditview",
"--help",
"--html",
"--ignore-case",
"--local-file",
"--locale",
"--location",
"--location-cat",
"--manpath",
"--match-case",
"--names-only",
"--nh",
"--nj",
"--no-subpages",
"--pager",
"--preprocessor",
"--prompt",
"--recode",
"--regex",
"--sections",
"--systems",
"--troff",
"--troff-device",
"--update",
"--usage",
"--version",
"--warnings",
"--whatis",
"--wildcard",
},
],
],
)
def test_man_completion(xession, check_completer, cmd, exp):
xession.env["MANPATH"] = os.path.dirname(os.path.abspath(__file__))
completions = check_completer(cmd, complete_fn=complete_from_man, prefix="-")
assert completions == exp
@skip_if_not_on_darwin
@pytest.mark.parametrize(
"cmd,exp",
[
[
"ar",
{
"-L",
"-S",
"-T",
"-a",
"-b",
"-c",
"-d",
"-i",
"-m",
"-o",
"-p",
"-q",
"-r",
"-s",
"-t",
"-u",
"-x",
},
],
],
)
def test_bsd_man_page_completions(xession, check_completer, cmd, exp):
proc = subprocess.run([cmd, "--version"], stderr=subprocess.PIPE)
if (cmd == "ar" and proc.returncode != 1) or (
cmd == "man" and proc.stderr.strip() not in {b"man, version 1.6g"}
):
pytest.skip("A different man page version is installed")
# BSD & Linux have different man page version
completions = check_completer(cmd, complete_fn=complete_from_man, prefix="-")
assert completions == exp