summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2014-06-26 12:41:01 +0100
committerPádraig Brady <P@draigBrady.com>2014-06-26 15:30:41 +0100
commitacb422bdd1b325285bb46883f02d8fc6402efd14 (patch)
tree1f77b51c48cff7532a9227fa3517c5c26eee30be
parente7c7802964cbf0f77a5883808e28eab56e36907b (diff)
downloadcoreutils-acb422bdd1b325285bb46883f02d8fc6402efd14.tar.xz
tests: use predetermined NON_ROOT_GID
* HACKING: GID is more useful in tests than group name, so rename input param from NON_ROOT_GROUP to NON_ROOT_GID to make it obvious that only a group ID is now acceptable, thus allowing GID lookups to be avoided throughout the tests. * init.cfg (require_root_): Likewise. * tests/misc/truncate-owned-by-other.sh: Avoid looking up the GID. * tests/touch/now-owned-by-other.sh: Likewise. * tests/misc/chroot-credentials.sh: Likewise. Also fix an instance of comparison against NON_ROOT_GROUP which would have given a false failure if a non numeric value was passed in. * tests/id/setgid.sh: Use previously looked up gid as a more accurate base for the subsequent adjustment, and move the uid lookup within chroot, rather than having the overhead of a separate `id` invocation.
-rw-r--r--HACKING2
-rw-r--r--init.cfg2
-rwxr-xr-xtests/id/setgid.sh19
-rwxr-xr-xtests/misc/chroot-credentials.sh8
-rwxr-xr-xtests/misc/truncate-owned-by-other.sh4
-rwxr-xr-xtests/touch/now-owned-by-other.sh4
6 files changed, 17 insertions, 22 deletions
diff --git a/HACKING b/HACKING
index 0b0c6d698..393a6236f 100644
--- a/HACKING
+++ b/HACKING
@@ -453,7 +453,7 @@ Variables that are significant for tests with their default values are:
RUN_VERY_EXPENSIVE_TESTS=no
SHELL=/bin/sh
NON_ROOT_USERNAME=nobody
- NON_ROOT_GROUP=$(id -g $NON_ROOT_USERNAME)
+ NON_ROOT_GID=$(id -g $NON_ROOT_USERNAME)
COREUTILS_GROUPS=$(id -G)
There are hundreds of tests in the tests/ directories. You can use
diff --git a/init.cfg b/init.cfg
index e225bd6d6..725ee1213 100644
--- a/init.cfg
+++ b/init.cfg
@@ -413,7 +413,7 @@ require_root_()
{
uid_is_privileged_ || skip_ "must be run as root"
NON_ROOT_USERNAME=${NON_ROOT_USERNAME=nobody}
- NON_ROOT_GROUP=${NON_ROOT_GROUP=$(id -g $NON_ROOT_USERNAME)}
+ NON_ROOT_GID=${NON_ROOT_GID=$(id -g $NON_ROOT_USERNAME)}
# When the current test invokes chroot, call nonroot_has_perm_
# to check for a common problem.
diff --git a/tests/id/setgid.sh b/tests/id/setgid.sh
index 0664c47a2..6d9d74f43 100755
--- a/tests/id/setgid.sh
+++ b/tests/id/setgid.sh
@@ -20,21 +20,20 @@
print_ver_ id
require_root_
-u=$(id -u $NON_ROOT_USERNAME) || framework_failure_
-g=$u
-
-# Construct a different group number.
-gp1=$(expr $g + 1)
+# Construct a different group number
+gp1=$(expr $NON_ROOT_GID + 1)
echo $gp1 > exp || framework_failure_
-# With coreutils-8.16 and earlier, id -G would print both: $gp1 $g
-chroot --user=+$u:+$gp1 --groups='' / env PATH="$PATH" \
+# With coreutils-8.16 and earlier, id -G would print both:
+# $gp1 $NON_ROOT_GID
+chroot --user=$NON_ROOT_USERNAME:+$gp1 --groups='' / env PATH="$PATH" \
id -G > out || fail=1
-compare exp out || { cat out; fail=1; }
+compare exp out || fail=1
-# With coreutils-8.22 and earlier, id would erroneously print groups=$g
-chroot --user=+$u:+$gp1 --groups='' / env PATH="$PATH" \
+# With coreutils-8.22 and earlier, id would erroneously print
+# groups=$NON_ROOT_GID
+chroot --user=$NON_ROOT_USERNAME:+$gp1 --groups='' / env PATH="$PATH" \
id > out || fail=1
grep -F "groups=$gp1" out || { cat out; fail=1; }
diff --git a/tests/misc/chroot-credentials.sh b/tests/misc/chroot-credentials.sh
index d50704ccc..b06e8b7f0 100755
--- a/tests/misc/chroot-credentials.sh
+++ b/tests/misc/chroot-credentials.sh
@@ -29,7 +29,7 @@ root=$(id -nu 0) || skip_ "Couldn't look up root username"
# verify numeric IDs looked up similarly to names
NON_ROOT_UID=$(id -u $NON_ROOT_USERNAME)
-NON_ROOT_GID=$(id -g $NON_ROOT_USERNAME)
+NON_ROOT_GROUP=$NON_ROOT_GID # Used where we want name lookups to occur
# "uid:" is supported (unlike chown etc.) since we treat it like "uid"
chroot --userspec=$NON_ROOT_UID: / true || fail=1
@@ -64,7 +64,7 @@ id_G_after_chroot=$(
chroot --userspec=$NON_ROOT_USERNAME:$NON_ROOT_GROUP \
--groups=$NON_ROOT_GROUP / id -G
)
-test "$id_G_after_chroot" = $NON_ROOT_GROUP || fail=1
+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)" = \
@@ -77,7 +77,7 @@ test "$(chroot --userspec=$NON_ROOT_USERNAME: / id -G)" = \
# Verify that when specifying only the user and clearing supplemental groups
# that we only get the primary group
test "$(chroot --userspec=$NON_ROOT_USERNAME --groups='' / id -G)" = \
- "$(id -g $NON_ROOT_USERNAME)" || fail=1
+ $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)" = \
@@ -88,7 +88,7 @@ test "$(chroot --userspec=$NON_ROOT_UID / id -G)" = \
# results in no lookups in the name database which could be useful depending
# on your chroot setup.
test "$(chroot --userspec=+$NON_ROOT_UID:+$NON_ROOT_GID --groups='' / id -G)" =\
- "$(id -g $NON_ROOT_USERNAME)" || fail=1
+ $NON_ROOT_GID || fail=1
# Verify that when specifying only a group we get the current user ID
test "$(chroot --userspec=:$NON_ROOT_GROUP / id -u)" = "$(id -u)" \
diff --git a/tests/misc/truncate-owned-by-other.sh b/tests/misc/truncate-owned-by-other.sh
index e93b7f136..e70badb6b 100755
--- a/tests/misc/truncate-owned-by-other.sh
+++ b/tests/misc/truncate-owned-by-other.sh
@@ -21,11 +21,9 @@ print_ver_ truncate
require_root_
-group_num=$(id -g $NON_ROOT_USERNAME)
-
# Create a file owned by root, and writable by $NON_ROOT_USERNAME.
echo > root-owned || framework_failure_
-chgrp +$group_num . root-owned || framework_failure_
+chgrp +$NON_ROOT_GID . root-owned || framework_failure_
chmod g+w root-owned
# Ensure that the current directory is searchable by $NON_ROOT_USERNAME.
diff --git a/tests/touch/now-owned-by-other.sh b/tests/touch/now-owned-by-other.sh
index f5eeda604..d01097edb 100755
--- a/tests/touch/now-owned-by-other.sh
+++ b/tests/touch/now-owned-by-other.sh
@@ -20,11 +20,9 @@
print_ver_ touch
require_root_
-group_num=$(id -g $NON_ROOT_USERNAME)
-
# Create a file owned by root, and writable by $NON_ROOT_USERNAME.
echo > root-owned || framework_failure_
-chgrp +$group_num . root-owned || framework_failure_
+chgrp +$NON_ROOT_GID . root-owned || framework_failure_
chmod g+w root-owned
# Ensure that the current directory is searchable by $NON_ROOT_USERNAME.