From 709a085a1c52ba50909af26e2b0cabdadf5e882e Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Tue, 27 Feb 2024 16:12:07 +0100 Subject: [PATCH] Unbreak Podman's downstream Fedora CI (part 2) ... and backport some new upstream tests. https://bugzilla.redhat.com/show_bug.cgi?id=2263968 Resolves: RHEL-30245 --- ...nbreak-Podman-s-downstream-Fedora-CI.patch | 167 +++- toolbox-test-system-new.patch | 894 ++++++++++++++++++ toolbox.spec | 11 +- 3 files changed, 1067 insertions(+), 5 deletions(-) create mode 100644 toolbox-test-system-new.patch diff --git a/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch b/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch index 92cebc8..1956003 100644 --- a/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch +++ b/toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch @@ -1,7 +1,7 @@ -From 6838e9347199e875f9869acd2afa64688161ca11 Mon Sep 17 00:00:00 2001 +From a859f73d075ec0505994d8ce0f371ec28e466983 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Tue, 13 Feb 2024 21:56:06 +0100 -Subject: [PATCH] test/system: Unbreak Podman's downstream Fedora CI +Subject: [PATCH 1/2] test/system: Unbreak Podman's downstream Fedora CI The paths to bats-assert and bats-support are broken, if bats(1) is invoked from any other location than the parent directory of the 'tests' @@ -30,7 +30,7 @@ https://github.com/containers/toolbox/pull/1448 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/system/setup_suite.bash b/test/system/setup_suite.bash -index 78507d660529..649018f01e96 100644 +index e4edf232bcd8..01985b7f9afc 100644 --- a/test/system/setup_suite.bash +++ b/test/system/setup_suite.bash @@ -17,7 +17,7 @@ @@ -45,3 +45,164 @@ index 78507d660529..649018f01e96 100644 -- 2.43.0 + +From a183876eae2bb4ffd84bca4303fc28be6725ebc2 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Fri, 23 Feb 2024 10:38:16 +0100 +Subject: [PATCH 2/2] test/system: Unbreak Podman's downstream Fedora CI (part + 2) + +The working directory from which bats(1) is invoked might not be part of +the Toolbx container. eg., Podman's downstream Fedora CI invokes the +tests as: + $ cd /path/to/toolbox/test/system + $ bats . + +... and it led to [1]: + not ok 110 run: Smoke test with true(1) + # (from function `assert_output' in file + ./libs/bats-assert/src/assert.bash, line 255, + # in test file ./104-run.bats, line 38) + # `assert_output ""' failed + # + # -- output differs -- + # expected (0 lines): + # + # actual (3 lines): + # Error: crun: chdir to `/usr/share/toolbox/test/system`: No such + file or directory: OCI runtime attempted to invoke a command that + was not found + # Error: directory /usr/share/toolbox/test/system not found in + container fedora-toolbox-41 + # Using /home/testuser instead. + # -- + # + +[1] https://bugzilla.redhat.com/show_bug.cgi?id=2263968 + +https://github.com/containers/toolbox/pull/1457 +--- + test/system/104-run.bats | 2 ++ + test/system/201-ipc.bats | 2 ++ + test/system/203-network.bats | 2 ++ + test/system/206-user.bats | 2 ++ + test/system/210-ulimit.bats | 2 ++ + test/system/211-dbus.bats | 2 ++ + test/system/220-environment-variables.bats | 2 ++ + 7 files changed, 14 insertions(+) + +diff --git a/test/system/104-run.bats b/test/system/104-run.bats +index ff11a8477062..a0cb89fdeeca 100644 +--- a/test/system/104-run.bats ++++ b/test/system/104-run.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/201-ipc.bats b/test/system/201-ipc.bats +index 15c791dec86d..09200b41d06c 100644 +--- a/test/system/201-ipc.bats ++++ b/test/system/201-ipc.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/203-network.bats b/test/system/203-network.bats +index db1ba561f314..012374e3317f 100644 +--- a/test/system/203-network.bats ++++ b/test/system/203-network.bats +@@ -35,9 +35,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/206-user.bats b/test/system/206-user.bats +index 2df7862f259e..473a6b40905a 100644 +--- a/test/system/206-user.bats ++++ b/test/system/206-user.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/210-ulimit.bats b/test/system/210-ulimit.bats +index ea0c46685df1..ea08feea1513 100644 +--- a/test/system/210-ulimit.bats ++++ b/test/system/210-ulimit.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/211-dbus.bats b/test/system/211-dbus.bats +index 295bb71b2789..61c543a56005 100644 +--- a/test/system/211-dbus.bats ++++ b/test/system/211-dbus.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +diff --git a/test/system/220-environment-variables.bats b/test/system/220-environment-variables.bats +index 5b51d17dee55..c24e07d146ee 100644 +--- a/test/system/220-environment-variables.bats ++++ b/test/system/220-environment-variables.bats +@@ -23,9 +23,11 @@ setup() { + bats_require_minimum_version 1.7.0 + _setup_environment + cleanup_containers ++ pushd "$HOME" || return 1 + } + + teardown() { ++ popd || return 1 + cleanup_containers + } + +-- +2.43.0 + diff --git a/toolbox-test-system-new.patch b/toolbox-test-system-new.patch new file mode 100644 index 0000000..9800b15 --- /dev/null +++ b/toolbox-test-system-new.patch @@ -0,0 +1,894 @@ +From f51c4a4cd8ff1c51a68073a10eaddab8f16fdaf6 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 8 Feb 2024 22:18:33 +0100 +Subject: [PATCH 1/4] test/system: Ensure that the user is part of a group with + the same name + +https://github.com/containers/toolbox/pull/1447 +--- + test/system/206-user.bats | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/test/system/206-user.bats b/test/system/206-user.bats +index c295d8a61f39..cdd38c146024 100644 +--- a/test/system/206-user.bats ++++ b/test/system/206-user.bats +@@ -434,6 +434,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^(sudo|wheel):x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -447,6 +448,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^wheel:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -460,6 +462,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^wheel:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -473,6 +476,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^wheel:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -486,6 +490,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^sudo:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -499,6 +504,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^sudo:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +@@ -512,6 +518,7 @@ teardown() { + run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 cat /etc/group + + assert_success ++ assert_line --regexp "^$USER:x:[[:digit:]]+:$USER$" + assert_line --regexp "^sudo:x:[[:digit:]]+:$USER$" + assert [ ${#lines[@]} -gt 1 ] + +-- +2.43.0 + + +From b2d64fad1a23a07919efdb70de9247645e44f973 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 8 Feb 2024 22:51:43 +0100 +Subject: [PATCH 2/4] test/system: Ensure that process started by 'podman exec' + has all groups +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 15173f8c25c81244 exposed a bug in crun(1) [1] where the process +started directly by 'podman exec --user ...' inside the Toolbx container +would not have the supplementary groups attached to the user by the +entry point. + +This could be observed by differences in id(1): + ⬢$ id + uid=1000(user) gid=1000(user) groups=1000(user) + ⬢$ id user + uid=1000(user) gid=1000(user) groups=1000(user),10(wheel) + +... and could be worked around by starting a new session with sudo(8). + +[1] crun commit 9effaebb429a1aed + https://github.com/containers/crun/commit/9effaebb429a1aed + https://github.com/containers/crun/issues/644 + https://github.com/containers/podman/issues/9986 + +https://github.com/containers/toolbox/issues/608 +--- + test/system/206-user.bats | 231 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 231 insertions(+) + +diff --git a/test/system/206-user.bats b/test/system/206-user.bats +index cdd38c146024..2df7862f259e 100644 +--- a/test/system/206-user.bats ++++ b/test/system/206-user.bats +@@ -525,3 +525,234 @@ teardown() { + # shellcheck disable=SC2154 + assert [ ${#stderr_lines[@]} -eq 0 ] + } ++ ++@test "user: id(1) for $USER inside the default container" { ++ create_default_container ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Fedora 34" { ++ create_distro_container fedora 34 fedora-toolbox-34 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside RHEL 8.7" { ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "user: id(1) for $USER inside Ubuntu 20.04" { ++ create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 id ++ ++ assert_success ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ local output_id="${lines[0]}" ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++ ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 id "$USER" ++ ++ assert_success ++ assert_line --index 0 "$output_id" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ # shellcheck disable=SC2154 ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} +-- +2.43.0 + + +From da2555d04f9ff677b3f2033ff36390f75c3a509d Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 18 Jan 2024 19:53:02 +0100 +Subject: [PATCH 3/4] test/system: Group by higher-level objective, not + distribution + +Fallout from 51ffd2793d882ffab45ace44c03edfdaeb3f138c + +https://github.com/containers/toolbox/pull/1436 +--- + test/system/220-environment-variables.bats | 152 ++++++++++----------- + 1 file changed, 76 insertions(+), 76 deletions(-) + +diff --git a/test/system/220-environment-variables.bats b/test/system/220-environment-variables.bats +index 0e1356654468..dd74b1dc5142 100644 +--- a/test/system/220-environment-variables.bats ++++ b/test/system/220-environment-variables.bats +@@ -1,6 +1,6 @@ + # shellcheck shell=bats + # +-# Copyright © 2023 Red Hat, Inc. ++# Copyright © 2023 – 2024 Red Hat, Inc. + # + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. +@@ -57,25 +57,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside the default container" { +- skip "https://pagure.io/setup/pull-request/48" +- +- create_default_container ++@test "environment variables: HISTFILESIZE inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest + +- if [ "$HISTSIZE" = "" ]; then ++ # shellcheck disable=SC2031 ++ if [ "$HISTFILESIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTSIZE=1001 ++ HISTFILESIZE=1001 + else +- ((HISTSIZE++)) ++ ((HISTFILESIZE++)) + fi + +- export HISTSIZE ++ export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTFILESIZE"' + + assert_success +- assert_line --index 0 "$HISTSIZE" ++ assert_line --index 0 "$HISTFILESIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -87,8 +86,8 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Arch Linux" { +- create_distro_container arch latest arch-toolbox-latest ++@test "environment variables: HISTFILESIZE inside Fedora 34" { ++ create_distro_container fedora 34 fedora-toolbox-34 + + # shellcheck disable=SC2031 + if [ "$HISTFILESIZE" = "" ]; then +@@ -101,7 +100,7 @@ teardown() { + export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTFILESIZE"' + + assert_success + assert_line --index 0 "$HISTFILESIZE" +@@ -116,24 +115,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Arch Linux" { +- create_distro_container arch latest arch-toolbox-latest ++@test "environment variables: HISTFILESIZE inside RHEL 8.7" { ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 + + # shellcheck disable=SC2031 +- if [ "$HISTSIZE" = "" ]; then ++ if [ "$HISTFILESIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTSIZE=1001 ++ HISTFILESIZE=1001 + else +- ((HISTSIZE++)) ++ ((HISTFILESIZE++)) + fi + +- export HISTSIZE ++ export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTFILESIZE"' + + assert_success +- assert_line --index 0 "$HISTSIZE" ++ assert_line --index 0 "$HISTFILESIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -145,8 +144,8 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Fedora 34" { +- create_distro_container fedora 34 fedora-toolbox-34 ++@test "environment variables: HISTFILESIZE inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 + + # shellcheck disable=SC2031 + if [ "$HISTFILESIZE" = "" ]; then +@@ -159,7 +158,8 @@ teardown() { + export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 \ ++ bash -c 'echo "$HISTFILESIZE"' + + assert_success + assert_line --index 0 "$HISTFILESIZE" +@@ -174,26 +174,25 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Fedora 34" { +- skip "https://pagure.io/setup/pull-request/48" +- +- create_distro_container fedora 34 fedora-toolbox-34 ++@test "environment variables: HISTFILESIZE inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 + + # shellcheck disable=SC2031 +- if [ "$HISTSIZE" = "" ]; then ++ if [ "$HISTFILESIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTSIZE=1001 ++ HISTFILESIZE=1001 + else +- ((HISTSIZE++)) ++ ((HISTFILESIZE++)) + fi + +- export HISTSIZE ++ export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 \ ++ bash -c 'echo "$HISTFILESIZE"' + + assert_success +- assert_line --index 0 "$HISTSIZE" ++ assert_line --index 0 "$HISTFILESIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -205,12 +204,11 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside RHEL 8.7" { +- create_distro_container rhel 8.7 rhel-toolbox-8.7 ++@test "environment variables: HISTFILESIZE inside Ubuntu 20.04" { ++ create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 + + # shellcheck disable=SC2031 + if [ "$HISTFILESIZE" = "" ]; then +- # shellcheck disable=SC2030 + HISTFILESIZE=1001 + else + ((HISTFILESIZE++)) +@@ -219,7 +217,8 @@ teardown() { + export HISTFILESIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 \ ++ bash -c 'echo "$HISTFILESIZE"' + + assert_success + assert_line --index 0 "$HISTFILESIZE" +@@ -234,12 +233,11 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside RHEL 8.7" { ++@test "environment variables: HISTSIZE inside the default container" { + skip "https://pagure.io/setup/pull-request/48" + +- create_distro_container rhel 8.7 rhel-toolbox-8.7 ++ create_default_container + +- # shellcheck disable=SC2031 + if [ "$HISTSIZE" = "" ]; then + # shellcheck disable=SC2030 + HISTSIZE=1001 +@@ -250,7 +248,7 @@ teardown() { + export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run bash -c 'echo "$HISTSIZE"' + + assert_success + assert_line --index 0 "$HISTSIZE" +@@ -265,25 +263,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Ubuntu 16.04" { +- create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++@test "environment variables: HISTSIZE inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest + + # shellcheck disable=SC2031 +- if [ "$HISTFILESIZE" = "" ]; then ++ if [ "$HISTSIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTFILESIZE=1001 ++ HISTSIZE=1001 + else +- ((HISTFILESIZE++)) ++ ((HISTSIZE++)) + fi + +- export HISTFILESIZE ++ export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 \ +- bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HISTSIZE"' + + assert_success +- assert_line --index 0 "$HISTFILESIZE" ++ assert_line --index 0 "$HISTSIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -295,8 +292,10 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Ubuntu 16.04" { +- create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++@test "environment variables: HISTSIZE inside Fedora 34" { ++ skip "https://pagure.io/setup/pull-request/48" ++ ++ create_distro_container fedora 34 fedora-toolbox-34 + + # shellcheck disable=SC2031 + if [ "$HISTSIZE" = "" ]; then +@@ -309,7 +308,7 @@ teardown() { + export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HISTSIZE"' + + assert_success + assert_line --index 0 "$HISTSIZE" +@@ -324,25 +323,26 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Ubuntu 18.04" { +- create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++@test "environment variables: HISTSIZE inside RHEL 8.7" { ++ skip "https://pagure.io/setup/pull-request/48" ++ ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 + + # shellcheck disable=SC2031 +- if [ "$HISTFILESIZE" = "" ]; then ++ if [ "$HISTSIZE" = "" ]; then + # shellcheck disable=SC2030 +- HISTFILESIZE=1001 ++ HISTSIZE=1001 + else +- ((HISTFILESIZE++)) ++ ((HISTSIZE++)) + fi + +- export HISTFILESIZE ++ export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 \ +- bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HISTSIZE"' + + assert_success +- assert_line --index 0 "$HISTFILESIZE" ++ assert_line --index 0 "$HISTSIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +@@ -354,8 +354,8 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTSIZE inside Ubuntu 18.04" { +- create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++@test "environment variables: HISTSIZE inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 + + # shellcheck disable=SC2031 + if [ "$HISTSIZE" = "" ]; then +@@ -368,7 +368,7 @@ teardown() { + export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 bash -c 'echo "$HISTSIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 bash -c 'echo "$HISTSIZE"' + + assert_success + assert_line --index 0 "$HISTSIZE" +@@ -383,24 +383,24 @@ teardown() { + assert [ ${#stderr_lines[@]} -eq 0 ] + } + +-@test "environment variables: HISTFILESIZE inside Ubuntu 20.04" { +- create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 ++@test "environment variables: HISTSIZE inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 + + # shellcheck disable=SC2031 +- if [ "$HISTFILESIZE" = "" ]; then +- HISTFILESIZE=1001 ++ if [ "$HISTSIZE" = "" ]; then ++ # shellcheck disable=SC2030 ++ HISTSIZE=1001 + else +- ((HISTFILESIZE++)) ++ ((HISTSIZE++)) + fi + +- export HISTFILESIZE ++ export HISTSIZE + + # shellcheck disable=SC2016 +- run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 \ +- bash -c 'echo "$HISTFILESIZE"' ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 bash -c 'echo "$HISTSIZE"' + + assert_success +- assert_line --index 0 "$HISTFILESIZE" ++ assert_line --index 0 "$HISTSIZE" + + if check_bats_version 1.10.0; then + assert [ ${#lines[@]} -eq 1 ] +-- +2.43.0 + + +From ee2c92299d5488bab4e54cb04d9a120e0b9ed405 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 18 Jan 2024 20:17:50 +0100 +Subject: [PATCH 4/4] test/system: Test that the HOSTNAME environment variable + is set + +Bash automatically sets the HOSTNAME environment variable to the name of +the current host [1] as returned by gethostname(2), which is the same as +hostname(1). + +However, on Fedora, from Fedora 33 onwards, /etc/profile sets the +HOSTNAME environment variable to 'hostnamectl --transient' [2], and, +from Fedora 35 onwards, it has a fallback to hostname(1) [3]. These two +approaches return different values when used inside a Toolbx container. +The former picks up the hostname of the host operating system, while the +fallback gets the name that was set when creating the container with +'podman create --hostname toolbox ...'. + +Hence, the value of HOSTNAME inside a Toolbx container for Fedora +depends on whether the corresponding version of the fedora-toolbox image +contained hostnamectl(1) or not. + +[1] https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html + +[2] setup commit eb9cc4dce89be24f + https://pagure.io/setup/c/eb9cc4dce89be24f + https://bugzilla.redhat.com/show_bug.cgi?id=1745245 + +[3] setup commit ddd74b5d971a734c + https://pagure.io/setup/c/ddd74b5d971a734c + https://pagure.io/setup/pull-request/28 + https://bugzilla.redhat.com/show_bug.cgi?id=1938223 + +https://github.com/containers/toolbox/issues/558 +--- + test/system/220-environment-variables.bats | 126 +++++++++++++++++++++ + 1 file changed, 126 insertions(+) + +diff --git a/test/system/220-environment-variables.bats b/test/system/220-environment-variables.bats +index dd74b1dc5142..5b51d17dee55 100644 +--- a/test/system/220-environment-variables.bats ++++ b/test/system/220-environment-variables.bats +@@ -439,3 +439,129 @@ teardown() { + # shellcheck disable=SC2154 + assert [ ${#stderr_lines[@]} -eq 0 ] + } ++ ++@test "environment variables: HOSTNAME inside the default container" { ++ create_default_container ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 --regexp "^(toolbox|$HOSTNAME)$" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Arch Linux" { ++ create_distro_container arch latest arch-toolbox-latest ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Fedora 34" { ++ create_distro_container fedora 34 fedora-toolbox-34 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "$HOSTNAME" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside RHEL 8.7" { ++ create_distro_container rhel 8.7 rhel-toolbox-8.7 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Ubuntu 16.04" { ++ create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Ubuntu 18.04" { ++ create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} ++ ++@test "environment variables: HOSTNAME inside Ubuntu 20.04" { ++ create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04 ++ ++ # shellcheck disable=SC2016 ++ run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 bash -c 'echo "$HOSTNAME"' ++ ++ assert_success ++ assert_line --index 0 "toolbox" ++ ++ if check_bats_version 1.10.0; then ++ assert [ ${#lines[@]} -eq 1 ] ++ else ++ assert [ ${#lines[@]} -eq 2 ] ++ fi ++ ++ assert [ ${#stderr_lines[@]} -eq 0 ] ++} +-- +2.43.0 + diff --git a/toolbox.spec b/toolbox.spec index 4cef378..60d3a1b 100644 --- a/toolbox.spec +++ b/toolbox.spec @@ -17,7 +17,7 @@ Version: 0.0.99.5 %endif %endif -Release: 7%{?dist} +Release: 8%{?dist} Summary: Tool for interactive command line environments on Linux License: Apache-2.0 @@ -28,7 +28,8 @@ Source0: https://github.com/containers/%{name}/releases/download/%{version Source1: %{name}.conf # Upstream -Patch0: toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch +Patch0: toolbox-test-system-new.patch +Patch1: toolbox-test-system-Unbreak-Podman-s-downstream-Fedora-CI.patch # Fedora specific Patch100: toolbox-Make-the-build-flags-match-Fedora-s-gobuild.patch @@ -111,6 +112,7 @@ The %{name}-tests package contains system tests for %{name}. %setup -q %patch -P0 -p1 +%patch -P1 -p1 %if 0%{?fedora} %ifnarch ppc64 @@ -188,6 +190,11 @@ install -m0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/containers/%{name}.conf %changelog +* Tue Feb 27 2024 Debarshi Ray - 0.0.99.5-8 +- Unbreak Podman's downstream Fedora CI (part 2) +- Backport some new upstream tests +Resolves: RHEL-30245 + * Tue Feb 13 2024 Debarshi Ray - 0.0.99.5-7 - Unbreak Podman's downstream Fedora CI - Update the BuildRequires on golang to reflect reality