diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-05-24 18:02:54 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-05-24 18:02:54 +0200 |
commit | 0c09a306e59e2feec9818335b0b4f3355c02f420 (patch) | |
tree | b554200d7969247f47ebfbb4ed9c81dd572cdce5 /tests | |
parent | 6ec1f4caa34d350d9f8b90b71192c1d32807d934 (diff) | |
download | guix-0c09a306e59e2feec9818335b0b4f3355c02f420.tar guix-0c09a306e59e2feec9818335b0b4f3355c02f420.tar.gz |
system: Make sure user accounts refer to existing groups.
Fixes <http://bugs.gnu.org/20646>.
Reported by David Thompson <davet@gnu.org>.
* gnu/system/shadow.scm (assert-valid-users/groups): New procedure
* gnu/system.scm (operating-system-activation-script): Use it.
* tests/guix-system.sh (make_user_config): New function.
Add 3 tests using it.
* po/guix/POTFILES.in: Add gnu/system/shadow.scm.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/guix-system.sh | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/guix-system.sh b/tests/guix-system.sh index 1b77d1a0db..7008ef8031 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -76,3 +76,42 @@ then else grep "service 'networking'.*more than once" "$errorfile" fi + +make_user_config () +{ + cat > "$tmpfile" <<EOF +(use-modules (gnu)) +(use-service-modules networking) + +(operating-system + (host-name "antelope") + (timezone "Europe/Paris") + (locale "en_US.UTF-8") + + (bootloader (grub-configuration (device "/dev/sdX"))) + (file-systems (cons (file-system + (device "root") + (title 'label) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + (users (list (user-account + (name "dave") + (home-directory "/home/dave") + (group "$1") + (supplementary-groups '("$2")))))) +EOF +} + +make_user_config "users" "wheel" +guix system build "$tmpfile" -n # succeeds + +make_user_config "group-that-does-not-exist" "users" +if guix system build "$tmpfile" -n 2> "$errorfile" +then false +else grep "primary group.*group-that-does-not-exist.*undeclared" "$errorfile"; fi + +make_user_config "users" "group-that-does-not-exist" +if guix system build "$tmpfile" -n 2> "$errorfile" +then false +else grep "supplementary group.*group-that-does-not-exist.*undeclared" "$errorfile"; fi |