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