diff options
Diffstat (limited to 'test/t/test_man.py')
-rw-r--r-- | test/t/test_man.py | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/test/t/test_man.py b/test/t/test_man.py new file mode 100644 index 0000000..1ff9f84 --- /dev/null +++ b/test/t/test_man.py @@ -0,0 +1,115 @@ +import pytest + +from conftest import assert_bash_exec + + +@pytest.mark.bashcomp( + ignore_env=r"^[+-]((BASHOPTS|MANPATH)=|shopt -. failglob)" +) +class TestMan: + + manpath = "$PWD/man" + assumed_present = "man" + + @pytest.fixture + def colonpath(self, request, bash): + try: + assert_bash_exec(bash, "uname -s 2>&1 | grep -qiF cygwin") + except AssertionError: + pass + else: + pytest.skip("Cygwin doesn't like paths with colons") + return + assert_bash_exec(bash, "mkdir -p $TESTDIR/../tmp/man/man3") + assert_bash_exec( + bash, "touch $TESTDIR/../tmp/man/man3/Bash::Completion.3pm.gz" + ) + request.addfinalizer( + lambda: assert_bash_exec(bash, "rm -r $TESTDIR/../tmp/man") + ) + + @pytest.mark.complete( + "man bash-completion-testcas", + env=dict(MANPATH=manpath), + require_cmd=True, + ) + def test_1(self, completion): + assert completion == "e" + + @pytest.mark.complete("man man1/f", cwd="man", env=dict(MANPATH=manpath)) + def test_2(self, completion): + assert completion == "oo.1" + + @pytest.mark.complete("man man/", cwd="man", env=dict(MANPATH=manpath)) + def test_3(self, completion): + assert completion == "quux.8" + + @pytest.mark.complete( + "man %s" % assumed_present, + cwd="shared/empty_dir", + env=dict(MANPATH=manpath), + ) + def test_4(self, completion): + """ + Assumed present should not be completed complete when there's no + leading/trailing colon in $MANPATH. + """ + assert not completion + + @pytest.mark.complete( + "man %s" % assumed_present, + require_cmd=True, + cwd="shared/empty_dir", + env=dict(MANPATH="%s:" % manpath), + ) + def test_5(self, completion): + """Trailing colon appends system man path.""" + assert completion + + @pytest.mark.complete( + "man bash-completion-testcas", + require_cmd=True, + env=dict(MANPATH="%s:" % manpath), + ) + def test_6(self, completion): + assert completion == "e" + + @pytest.mark.complete( + "man %s" % assumed_present, + require_cmd=True, + cwd="shared/empty_dir", + env=dict(MANPATH=":%s" % manpath), + ) + def test_7(self, completion): + """Leading colon prepends system man path.""" + assert completion + + @pytest.mark.complete( + "man bash-completion-testcas", + require_cmd=True, + env=dict(MANPATH=":%s" % manpath), + ) + def test_8(self, completion): + assert completion == "e" + + @pytest.mark.complete( + "man %s" % assumed_present, + require_cmd=True, + cwd="shared/empty_dir", + pre_cmds=("shopt -s failglob",), + ) + def test_9(self, bash, completion): + assert self.assumed_present in completion + assert_bash_exec(bash, "shopt -u failglob") + + @pytest.mark.complete( + "man Bash::C", + require_cmd=True, + env=dict(MANPATH="%s:../tmp/man" % manpath), + ) + def test_10(self, bash, colonpath, completion): + assert completion == "ompletion" + + @pytest.mark.complete("man -", require_cmd=True) + def test_11(self, completion): + assert completion |