aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-10-18 23:22:03 +0200
committerLudovic Courtès <ludo@gnu.org>2016-10-19 15:54:10 +0200
commit7fee5b53973fb4fe049aa0bc5db58093727bdf30 (patch)
treeb392d7b204098a4dfa3113c7d7fa7f801de11546 /tests
parent99df12cd1921dd497bb4fcdd96ee40e358d71e6d (diff)
downloadguix-7fee5b53973fb4fe049aa0bc5db58093727bdf30.tar.gz
guix-7fee5b53973fb4fe049aa0bc5db58093727bdf30.zip
container: Allow 'container-excursion' to the same namespaces.
Before that, 'container-excursion' would call 'setns' even when the target namespace is the one the caller is already in, which would fail. * gnu/build/linux-container.scm (container-excursion): Introduce 'source' and 'target'. Compare the result of 'readlink' on these instead of comparing file descriptors to decide whether to call 'setns'. * tests/containers.scm ("container-excursion, same namespace"): New test.
Diffstat (limited to 'tests')
-rw-r--r--tests/containers.scm9
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/containers.scm b/tests/containers.scm
index bbcff3f51f..698bef3e47 100644
--- a/tests/containers.scm
+++ b/tests/containers.scm
@@ -162,4 +162,13 @@
(waitpid pid)
(zero? result)))))))
+(skip-if-unsupported)
+(test-equal "container-excursion, same namespaces"
+ 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))))
+
(test-end)