Skip to content

test(docker): add AlmaLinux 9 image#1579

Open
scop wants to merge 1 commit intomainfrom
chore/docker-almalinux9
Open

test(docker): add AlmaLinux 9 image#1579
scop wants to merge 1 commit intomainfrom
chore/docker-almalinux9

Conversation

@scop
Copy link
Owner

@scop scop commented Mar 1, 2026

Mostly for Bash 5.1 test coverage, and likely eventual CentOS 7 replacement.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI doesn't currently handle adding new images properly, so I'm seeding ghcr.io/scop/bash-completion/test:almalinux9 by pushing my locally built image.

@scop scop force-pushed the chore/docker-almalinux9 branch from e29591b to 4b4ab7f Compare March 1, 2026 08:49
@scop scop changed the title chore(docker): add AlmaLinux 9 container test(docker): add AlmaLinux 9 image Mar 1, 2026
Mostly for Bash 5.1 test coverage, and likely eventual CentOS 7 replacement.
@scop scop force-pushed the chore/docker-almalinux9 branch from 4b4ab7f to 733b0f1 Compare March 1, 2026 08:50
@scop
Copy link
Owner Author

scop commented Mar 1, 2026

Quite a few errors/failures in the first run. Messy notes from my local run that I have not sorted through.

$ docker run --rm -t -v $PWD:/usr/src/bash-completion -w /usr/src/bash-completion ghcr.io/scop/bash-completion/test:almalinux9 test/docker/entrypoint.sh
Details

bsdtar test_readable_archives, test_writable_archives

E       AssertionError: assert <CompletionResult []> == ['test.pax', 'test.rar']
E         +<CompletionResult []>
E         -['test.pax', 'test.rar']
E         Full diff:
E         - ['test.pax', 'test.rar']
E         + <CompletionResult []>

javadoc test_4_comp_dequote_incomplete

E       assert <CompletionResult []> == "efault'"
E         +<CompletionResult []>
E         -"efault'"

7z: test_6

E       AssertionError: Error running "[[ ${OLDPWD-Re8SCgEdfN} == "${_comp__test_5_NEWVAR_OLDPWD-Re8SCgEdfN}" ]]": exit status=127, output="
E         
E         bash: z: command not found"
E       assert '127' == '0'
E         - 0
E         + 127

python3: test_bb

E       AssertionError: assert '-bb' in <CompletionResult []>

rsync test_1, test_local_path_with_spaces, test_remote_path_with_spaces

E               AssertionError: Unexpected output: [bash: _comp_xfunc_scp_compgen_local_files: command not found
E               ]
E       AssertionError: Environment should not be modified
E       assert not ['+_scp_path_esc=\'[][(){}<>"\'\\\'\',:;^&!$=?`\\\\|[:space:]]\'', '+declare -f ssh']

lvextend test_1

timeout


sshfs test_1, test_local_path_suffix_1, test_remote_path_ending_with_backslash

E               AssertionError: Unexpected output: [bash: _comp_xfunc_scp_compgen_local_files: command not found
E               ]
E       AssertionError: Environment should not be modified
E       assert not ['+_scp_path_esc=\'[][(){}<>"\'\\\'\',:;^&!$=?`\\\\|[:space:]]\'', '+declare -f ssh']

unit_get_cword test_25

TBD


screen test_1, test_2, test_3, test_4, test_5, test_telnet, test_serial_3rdplus_arg, test_local_path_with_spaces_2

timeout

E       AssertionError: assert <CompletionResult []> == ['bar', 'bar ...oo', 'foo.d/']
E         +<CompletionResult []>
E         -['bar', 'bar bar.d/', 'foo', 'foo.d/']
E         Full diff:
E         - ['bar', 'bar bar.d/', 'foo', 'foo.d/']
E         + <CompletionResult []>
E       assert <CompletionResult []>
E       AssertionError: assert (<CompletionResult []> == 't'
E         +<CompletionResult []>
E         -'t' or 'cat' in <CompletionResult []>)
E       AssertionError: assert <CompletionResult []> == 'telnet'
E         +<CompletionResult []>
E         -'telnet'

scp test_option_arg, test_remote_path_with_nullglob, test_remote_path_with_failglob, test_remote_path_with_spaces, test_remote_path_with_backslash, test_remote_path_with_backslash_2, test_local_path_ending_with_backslash, test_remote_path_ending_with_backslash, test_local_path_with_spaces_1, test_local_path_backslash

E               AssertionError: Unexpected output: [sed: option requires an argument -- 'e'
E               Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
E       AssertionError: Error running "[[ $(shopt -p nullglob) == "${_comp__test_185_NEWSHOPT_nullglob}" ]]": exit status=127, output="
E         
E         bash: _MaGiC-maRKz-NEtXZVZfKC__[[: command not found"
E       assert '127' == '0'
E         - 0
E         + 127
E               AssertionError: Unexpected output: [bash: no match: s/\\\\\\\([][(){}<>"',:;^&!$=?`\\|[:space:]]\)/\\\1/g
E               bash: $1: unbound variable
E               /@]
E       AssertionError: Environment should not be modified
E       assert not ['-HOME=/root']
E       AssertionError: Error running "[[ ${OLDPWD-Re8SCgEdfN} == "${_comp__test_192_NEWVAR_OLDPWD-Re8SCgEdfN}" ]]": exit status=unknown, output="
E         "
E       assert 'unknown' == '0'
E         - 0
E         + unknown
E       AssertionError: Environment should not be modified
E       assert not ['-BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:inhe...ion-2.17.0/test/fixtures', '+_comp_test_pwd=/tmp/pytest-of-root/pytest-0/popen-gw1/bash-completion.fixture_dir.0', ...]

timeout

E       AssertionError: Error running "ssh() { printf '%s\n' 'abc def.txt' 'abc\ def.txt'; }": exit status=1, output="
E         
E         bash: `_MaGiC-maRKz-NEtXZVZfKC__ssh': not a valid identifier"
E       assert '1' == '0'
E         - 0
E         + 1
E       AssertionError: assert 'file\\\\' == 'file\\\\ '
E         - file\\ 
E         ?       -
E         + file\\
E       AssertionError: assert <CompletionRe...\x08./ \x08']> == 'ced\\ \\ conf'
E         +<CompletionResult ['\x08\x08\x08./ \x08']>
E         -'ced\\ \\ conf'
E       AssertionError: assert <CompletionResult []> == ['backslash-a...\\\\\\ b.txt']
E         +<CompletionResult []>
E         -['backslash-a\\ b.txt', 'backslash-a\\\\\\ b.txt']
E         Full diff:
E         - ['backslash-a\\ b.txt', 'backslash-a\\\\\\ b.txt']
E         + <CompletionResult []>

@scop
Copy link
Owner Author

scop commented Mar 1, 2026

Can't seem to reproduce any of those failures in a plain interactive run, like

docker run --rm -it -v $PWD:/usr/src/bash-completion -w /usr/src/bash-completion ghcr.io/scop/bash-completion/test:almalinux9 bash
pytest test/t/test_python3.py
# etc

@scop
Copy link
Owner Author

scop commented Mar 1, 2026

Seems the tests are flaky, getting random different errors across runs with plain

pytest --verbose -p no:cacheprovider --numprocesses=auto --dist=loadfile test

in an interactive container.

Tried also running the orignal tests without --numprocesses=auto --dist=loadfile in entrypoint.sh, but doing so yields the same errors.

@scop
Copy link
Owner Author

scop commented Mar 1, 2026

Ok, two classes of problems here:

  • parallel tests are flaky, getting rid of --numprocesses=auto --dist=loadfile serves as a workaround (CI already does this)
  • our current problems with load dir precedence is the culprit for the rest -- a rpm -e bash-completion hack in the test/docker/entrypoint.sh and then running on almalinux9 avoids all the remaining issues seen here

So in that sense I consider this PR to be actually mergeable as is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant