summaryrefslogtreecommitdiff
path: root/gnu/tests/base.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/tests/base.scm')
-rw-r--r--gnu/tests/base.scm37
1 files changed, 37 insertions, 0 deletions
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index f96d781b52..659b754802 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -1116,6 +1116,32 @@ non-ASCII names from /tmp.")
evaluated in MARIONETTE, a gexp denoting a marionette (system under test).
Assume that an unprivileged account for 'user' exists on the system under
test."
+ (define chown-snippet
+ ;; XXX: This snippet exists primarily so that #$output is understood in
+ ;; the right context.
+ '(object->string
+ `(begin
+ (use-modules (guix)
+ (gnu packages bootstrap))
+ (computed-file "chown-to-supplementary-group"
+ #~(begin
+ (use-modules (srfi srfi-1))
+
+ ',(gettimeofday) ;nonce
+ (let* ((groups (getgroups))
+ (other (find (lambda (gid)
+ (not (= gid (getgid))))
+ (vector->list groups))))
+ (format #t "attempting to chown \
+to supplementary group ~a...~%" other)
+ (pk 'supplementary-groups (getgroups)
+ 'gid (getgid) 'other other)
+ (force-output)
+ (mkdir "test")
+ (chown "test" (getuid) other)
+ (mkdir #$output)))
+ #:guile %bootstrap-guile))))
+
#~(begin
(test-equal "guix describe"
0
@@ -1143,6 +1169,17 @@ test."
hello))
#$marionette))
+ (test-equal "kvm GID mapped"
+ 0
+ ;; The "kvm" group should be among the supplementary groups of the
+ ;; build user. Try to chown a file to that group; this fails with
+ ;; EINVAL when running the unprivileged guix-daemon and the "kvm" GID
+ ;; is not mapped in its user namespace. See
+ ;; <https://bugs.gnu.org/77862>.
+ (marionette-eval
+ '(system* "guix" "build" "--no-grafts" "-e" #$chown-snippet)
+ #$marionette))
+
(test-equal "guix install hello"
0
;; Check that ~/.guix-profile & co. are properly created.