tests: Skip all the container tests when needed.
authorLudovic Courtès <ludo@gnu.org>
Fri, 24 Jun 2016 22:42:19 +0000 (00:42 +0200)
committerLudovic Courtès <ludo@gnu.org>
Fri, 24 Jun 2016 23:13:23 +0000 (01:13 +0200)
Reported by myglc2 <myglc2@gmail.com>
at <http://bugs.gnu.org/23836>.

* tests/containers.scm (skip-if-unsupported): New procedure.
Call it before each test.

tests/containers.scm

index 5a0f993..bbcff3f 100644 (file)
 
 ;; Skip these tests unless user namespaces are available and the setgroups
 ;; file (introduced in Linux 3.19 to address a security issue) exists.
-(unless (and (user-namespace-supported?)
-             (unprivileged-user-namespace-supported?)
-             (setgroups-supported?))
-  (test-skip 7))
+(define (skip-if-unsupported)
+  (unless (and (user-namespace-supported?)
+               (unprivileged-user-namespace-supported?)
+               (setgroups-supported?))
+    (test-skip 1)))
 
+(skip-if-unsupported)
 (test-assert "call-with-container, exit with 0 when there is no error"
   (zero?
    (call-with-container '() (const #t) #:namespaces '(user))))
 
+(skip-if-unsupported)
 (test-assert "call-with-container, user namespace"
   (zero?
    (call-with-container '()
@@ -47,6 +50,7 @@
        (assert-exit (and (zero? (getuid)) (zero? (getgid)))))
      #:namespaces '(user))))
 
+(skip-if-unsupported)
 (test-assert "call-with-container, uts namespace"
   (zero?
    (call-with-container '()
@@ -57,6 +61,7 @@
        (primitive-exit 0))
      #:namespaces '(user uts))))
 
+(skip-if-unsupported)
 (test-assert "call-with-container, pid namespace"
   (zero?
    (call-with-container '()
@@ -72,6 +77,7 @@
               (status:exit-val status)))))))
      #:namespaces '(user pid))))
 
+(skip-if-unsupported)
 (test-assert "call-with-container, mnt namespace"
   (zero?
    (call-with-container '(("none" device "/testing" "tmpfs" () #f #f))
@@ -79,6 +85,7 @@
        (assert-exit (file-exists? "/testing")))
      #:namespaces '(user mnt))))
 
+(skip-if-unsupported)
 (test-equal "call-with-container, mnt namespace, wrong bind mount"
   `(system-error ,ENOENT)
   ;; An exception should be raised; see <http://bugs.gnu.org/23306>.
     (lambda args
       (list 'system-error (system-error-errno args)))))
 
+(skip-if-unsupported)
 (test-assert "call-with-container, all namespaces"
   (zero?
    (call-with-container '()
      (lambda ()
        (primitive-exit 0)))))
 
+(skip-if-unsupported)
 (test-assert "container-excursion"
   (call-with-temporary-directory
    (lambda (root)