diff --git a/completions/sha256sum b/completions/sha256sum index adef1cd4a8c..ba2ad08472a 100644 --- a/completions/sha256sum +++ b/completions/sha256sum @@ -20,18 +20,20 @@ _comp_cmd_sha256sum() local sumtype=${1##*/} sumtype=${sumtype%sum} + local sumglob="@(*.$sumtype|@(check|${sumtype})sums?(.txt))" - local opt + local files opt for opt in "${words[@]}"; do if [[ $opt == -@(c|-check) ]]; then - _comp_compgen_filedir "$sumtype" + _comp_compgen -v files filedir && + _comp_compgen -- -X "!$sumglob" -W '"${files[@]}"' return fi done local files _comp_compgen -v files filedir && - _comp_compgen -- -X "*.$sumtype" -W '"${files[@]}"' + _comp_compgen -- -X "$sumglob" -W '"${files[@]}"' } && complete -F _comp_cmd_sha256sum b2sum md5sum sha{,1,224,256,384,512}sum diff --git a/test/fixtures/sha256sum/checksums b/test/fixtures/sha256sum/checksums new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/checksums @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/fixtures/sha256sum/checksums.txt b/test/fixtures/sha256sum/checksums.txt new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/checksums.txt @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/fixtures/sha256sum/sha256sums b/test/fixtures/sha256sum/sha256sums new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/sha256sums @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/fixtures/sha256sum/sha256sums.txt b/test/fixtures/sha256sum/sha256sums.txt new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/sha256sums.txt @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/t/test_sha256sum.py b/test/t/test_sha256sum.py index c8df94c461c..b919233787e 100644 --- a/test/t/test_sha256sum.py +++ b/test/t/test_sha256sum.py @@ -12,4 +12,10 @@ def test_summing(self, completion): @pytest.mark.complete("sha256sum -c ", cwd="sha256sum") def test_checking(self, completion): - assert completion == "foo.sha256" + assert completion == [ + "checksums", + "checksums.txt", + "foo.sha256", + "sha256sums", + "sha256sums.txt", + ]