mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-19 05:42:02 +02:00
test: avoid FP in chroot-credentials.sh for different group list order
On my openSUSE:Tumbleweed system, I get a false positive test failure in the above 'check-root' test because the group lists inside and outside the chroot have a different order: ++ chroot --userspec=berny / id -G ++ id -G berny + test '100 454 457 480 492' = '100 480 492 457 454' + fail=1 * tests/misc/chroot-credentials.sh (num_sort): Add function to sort group lists, and use it in the test cases which test multiple groups.
This commit is contained in:
@@ -61,6 +61,9 @@ if ! test "$HAVE_SETGROUPS"; then
|
||||
Exit $fail
|
||||
fi
|
||||
|
||||
# Change all whitespaces to newlines, then sort the input.
|
||||
# Use for tests with more groups in 'id' output.
|
||||
num_sort() { tr -s ' ' '\n' | sort -n; }
|
||||
|
||||
# Verify that there are no additional groups.
|
||||
id_G_after_chroot=$(
|
||||
@@ -70,12 +73,12 @@ id_G_after_chroot=$(
|
||||
test "$id_G_after_chroot" = $NON_ROOT_GID || fail=1
|
||||
|
||||
# Verify that when specifying only the user name we get all their groups
|
||||
test "$(chroot --userspec=$NON_ROOT_USERNAME / id -G)" = \
|
||||
"$(id -G $NON_ROOT_USERNAME)" || fail=1
|
||||
test "$(chroot --userspec=$NON_ROOT_USERNAME / id -G | num_sort)" = \
|
||||
"$(id -G $NON_ROOT_USERNAME | num_sort)" || fail=1
|
||||
|
||||
# Ditto with trailing : on the user name.
|
||||
test "$(chroot --userspec=$NON_ROOT_USERNAME: / id -G)" = \
|
||||
"$(id -G $NON_ROOT_USERNAME)" || fail=1
|
||||
test "$(chroot --userspec=$NON_ROOT_USERNAME: / id -G | num_sort)" = \
|
||||
"$(id -G $NON_ROOT_USERNAME | num_sort)" || fail=1
|
||||
|
||||
# Verify that when specifying only the user and clearing supplemental groups
|
||||
# that we only get the primary group
|
||||
@@ -83,8 +86,8 @@ test "$(chroot --userspec=$NON_ROOT_USERNAME --groups='' / id -G)" = \
|
||||
$NON_ROOT_GID || fail=1
|
||||
|
||||
# Verify that when specifying only the UID we get all their groups
|
||||
test "$(chroot --userspec=$NON_ROOT_UID / id -G)" = \
|
||||
"$(id -G $NON_ROOT_USERNAME)" || fail=1
|
||||
test "$(chroot --userspec=$NON_ROOT_UID / id -G | num_sort)" = \
|
||||
"$(id -G $NON_ROOT_USERNAME | num_sort)" || fail=1
|
||||
|
||||
# Verify that when specifying only the user and clearing supplemental groups
|
||||
# that we only get the primary group. Note this variant with prepended '+'
|
||||
|
||||
Reference in New Issue
Block a user