WIP: user/bash-completion: Update to 2.11

A. Wilcox requested to merge bump/bash-completion-2.11 into master

Test failures on gwyn. ifdown/ifup are marked xfail in containers; maybe the chroot is enough? It seems very unhappy with mandoc, and there's an aclocal and ssh failure.

==== FAILURES ====
____ TestAclocal.test_1 ____

self = <test_aclocal.TestAclocal object at 0x3fff7eb0d390>, completion = <CompletionResult []>

    @pytest.mark.complete("aclocal ")
    def test_1(self, completion):
>       assert completion
E       assert <CompletionResult []>

../t/test_aclocal.py:7: AssertionError
____ TestIfdown.test_1 ____

self = <test_ifdown.TestIfdown object at 0x3fff7e772588>, completion = <CompletionResult []>

    @pytest.mark.xfail(in_container(), reason="Probably fails in a container")
    @pytest.mark.complete("ifdown ")
    def test_1(self, completion):
>       assert completion
E       assert <CompletionResult []>

../t/test_ifdown.py:10: AssertionError
____ TestIfup.test_1 ____

self = <test_ifup.TestIfup object at 0x3fff7e714668>, completion = <CompletionResult []>

    @pytest.mark.xfail(in_container(), reason="Probably fails in a container")
    @pytest.mark.complete("ifup ")
    def test_1(self, completion):
>       assert completion
E       assert <CompletionResult []>

../t/test_ifup.py:10: AssertionError
____ TestMan.test_1 ____

self = <test_man.TestMan object at 0x3fff7e502e10>, completion = <CompletionResult []>

    @pytest.mark.complete(
        "man bash-completion-testcas",
        env=dict(MANPATH=manpath),
        require_cmd=True,
    )
    def test_1(self, completion):
>       assert completion == "e"
E       AssertionError: assert <CompletionResult []> == 'e'

../t/test_man.py:37: AssertionError
____ TestMan.test_5 ____

self = <test_man.TestMan object at 0x3fff7e3c3ba8>, completion = <CompletionResult []>

    @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
E       assert <CompletionResult []>

../t/test_man.py:67: AssertionError
____ TestMan.test_6 ____

self = <test_man.TestMan object at 0x3fff7e4c5e80>, completion = <CompletionResult []>

    @pytest.mark.complete(
        "man bash-completion-testcas",
        require_cmd=True,
        env=dict(MANPATH="%s:" % manpath),
    )
    def test_6(self, completion):
>       assert completion == "e"
E       AssertionError: assert <CompletionResult []> == 'e'

../t/test_man.py:75: AssertionError
____ TestMan.test_7 ____

self = <test_man.TestMan object at 0x3fff7e3c3278>, completion = <CompletionResult []>

    @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
E       assert <CompletionResult []>

../t/test_man.py:85: AssertionError
____ TestMan.test_8 ____

self = <test_man.TestMan object at 0x3fff7e4c5eb8>, completion = <CompletionResult []>

    @pytest.mark.complete(
        "man bash-completion-testcas",
        require_cmd=True,
        env=dict(MANPATH=":%s" % manpath),
    )
    def test_8(self, completion):
>       assert completion == "e"
E       AssertionError: assert <CompletionResult []> == 'e'

../t/test_man.py:93: AssertionError
____ TestMan.test_9 ____

self = <test_man.TestMan object at 0x3fff7e49b2e8>, bash = <pexpect.pty_spawn.spawn object at 0x3fff7e502ac8>, completion = <CompletionResult []>

    @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
E       AssertionError: assert 'man' in <CompletionResult []>
E        +  where 'man' = <test_man.TestMan object at 0x3fff7e49b2e8>.assumed_present

../t/test_man.py:102: AssertionError
____ TestMan.test_10 ____

self = <test_man.TestMan object at 0x3fff7e49bd68>, bash = <pexpect.pty_spawn.spawn object at 0x3fff7e502ac8>, colonpath = None, completion = <CompletionResult []>

    @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"
E       AssertionError: assert <CompletionResult []> == 'ompletion'

../t/test_man.py:111: AssertionError
____ TestSsh.test_partial_hostname ____

self = <test_ssh.TestSsh object at 0x3fff7dfcb5c0>, bash = <pexpect.pty_spawn.spawn object at 0x3fff7e035be0>, known_hosts = ['104.207.138.154', '104.232.42.247', '104.232.42.252', '104.232.42.253', '108.178.208.124', '108.61.242.206', ...]

    def test_partial_hostname(self, bash, known_hosts):
        first_char, partial_hosts = partialize(bash, known_hosts)
        completion = assert_complete(bash, "ssh %s" % first_char)
        if len(completion) == 1:
            assert completion == partial_hosts[0][1:]
        else:
>           assert completion == sorted(x for x in partial_hosts)
E           AssertionError: assert <CompletionRe....30.253.113']> == ['104.207.138...242.206', ...]
E             Use -v to get the full diff

../t/test_ssh.py:55: AssertionError
==== 11 failed, 1168 passed, 405 skipped, 20 xfailed, 3 xpassed in 841.59s (0:14:01) ====

Merge request reports