diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/containers.scm | 53 | ||||
-rw-r--r-- | tests/guix-environment-container.sh | 13 | ||||
-rw-r--r-- | tests/guix-refresh.sh | 3 | ||||
-rw-r--r-- | tests/transformations.scm | 19 |
4 files changed, 65 insertions, 23 deletions
diff --git a/tests/containers.scm b/tests/containers.scm index 608902c41a..70d5ba2d30 100644 --- a/tests/containers.scm +++ b/tests/containers.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> -;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2019, 2023 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,7 +31,8 @@ #:use-module (guix tests) #:use-module (srfi srfi-1) #:use-module (srfi srfi-64) - #:use-module (ice-9 match)) + #:use-module (ice-9 match) + #:use-module ((ice-9 ftw) #:select (scandir))) (define (assert-exit x) (primitive-exit (if x 0 1))) @@ -176,21 +177,11 @@ (close start-in) (container-excursion pid (lambda () - ;; Fork again so that the pid is within the context of - ;; the joined pid namespace instead of the original pid - ;; namespace. - (match (primitive-fork) - (0 - ;; Check that all of the namespace identifiers are - ;; the same as the container process. - (assert-exit - (equal? container-namespaces - (namespaces (getpid))))) - (fork-pid - (match (waitpid fork-pid) - ((_ . status) - (primitive-exit - (status:exit-val status))))))))))) + ;; Check that all of the namespace identifiers are + ;; the same as the container process. + (assert-exit + (equal? container-namespaces + (namespaces (getpid))))))))) (close end-in) ;; Stop the container. (write 'done end-out) @@ -203,9 +194,10 @@ 42 ;; The parent and child are in the same namespaces. 'container-excursion' ;; should notice that and avoid calling 'setns' since that would fail. - (container-excursion (getpid) - (lambda () - (primitive-exit 42)))) + (status:exit-val + (container-excursion (getpid) + (lambda () + (primitive-exit 42))))) (skip-if-unsupported) (test-assert "container-excursion*" @@ -236,6 +228,27 @@ (* 6 7)))) (skip-if-unsupported) +(test-equal "container-excursion*, /proc" + '("1" "2") + (call-with-temporary-directory + (lambda (root) + (let* ((pid (run-container root '() + %namespaces 1 + (lambda () + (sleep 100)))) + (result (container-excursion* pid + (lambda () + ;; We expect to see exactly two processes in this + ;; namespace. + (scandir "/proc" + (lambda (file) + (char-set-contains? + char-set:digit + (string-ref file 0)))))))) + (kill pid SIGKILL) + result)))) + +(skip-if-unsupported) (test-equal "eval/container, exit status" 42 (let* ((store (open-connection-for-tests)) diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh index 0306fc1744..0475405a89 100644 --- a/tests/guix-environment-container.sh +++ b/tests/guix-environment-container.sh @@ -1,6 +1,7 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2015 David Thompson <davet@gnu.org> -# Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> +# Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com> +# Copyright © 2023 Ludovic Courtès <ludo@gnu.org> # # This file is part of GNU Guix. # @@ -242,6 +243,16 @@ guix shell -CF --bootstrap guile-bootstrap glibc \ 0 1))' +# Test that $PATH inside the container includes the FHS directories. +guix shell -CF coreutils -- env | grep ^PATH=/bin:/usr/bin:/sbin:/usr/sbin.* + +# Make sure '--preserve' is honored for $PATH, which the '--emulate-fhs' +# option modifies. We can't (easily) check the whole $PATH as it will differ +# inside and outside the container, so just check our test $PATH is still +# present. See <https://issues.guix.gnu.org/60566>. +PATH=/foo $(type -P guix) shell -CF -E ^PATH$ coreutils \ + -- env | grep ^PATH=.*:/foo + # '--symlink' works. echo "TESTING SYMLINK IN CONTAINER" guix shell --bootstrap guile-bootstrap --container \ diff --git a/tests/guix-refresh.sh b/tests/guix-refresh.sh index d9f13bac3a..c5214e1d6e 100644 --- a/tests/guix-refresh.sh +++ b/tests/guix-refresh.sh @@ -94,7 +94,8 @@ cat > "$module_dir/sample.scm"<<EOF "086vqwk2wl8zfs47sq2xpjc9k066ilmb8z6dn0q6ymwjzlm196cd")))))) EOF guix refresh -t test -L "$module_dir" the-test-package -guix refresh -t test -L "$module_dir" the-test-package -u +guix refresh -t test -L "$module_dir" the-test-package -u \ + --keyring="$module_dir/keyring.kbx" # so we don't create $HOME/.config grep 'version "5.5"' "$module_dir/sample.scm" grep "$(guix hash -H sha256 -f nix-base32 "$module_dir/source")" "$module_dir/sample.scm" diff --git a/tests/transformations.scm b/tests/transformations.scm index 5c136e1d48..1fa2c0bba8 100644 --- a/tests/transformations.scm +++ b/tests/transformations.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016-2017, 2019-2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016-2017, 2019-2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2021 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. @@ -497,6 +497,23 @@ `((with-latest . "foo"))))) (package-version (t p))))) +(test-equal "options->transformation, with-version" + "1.0" + (mock ((guix upstream) %updaters + (delay (list (upstream-updater + (name 'dummy) + (pred (const #t)) + (description "") + (import (const (upstream-source + (package "foo") + (version "1.0") + (urls '("http://example.org"))))))))) + (let* ((p0 (dummy-package "foo" (version "7.7"))) + (p1 (dummy-package "bar" (inputs (list p0)))) + (t (options->transformation + `((with-version . "foo=1.0"))))) + (package-version (lookup-package-input (t p1) "foo"))))) + (test-equal "options->transformation, tune" '(cpu-tuning . "superfast") (let* ((p0 (dummy-package "p0")) |