Merge branch '19099-singularity-container-shell'
[arvados.git] / lib / crunchrun / singularity_test.go
index 2bad082baa414d77be64937e0e8ba242a6439a0b..e4c7cdb308ede92a3456fc253444b1f61aed79ad 100644 (file)
@@ -5,9 +5,11 @@
 package crunchrun
 
 import (
+       "os"
        "os/exec"
 
        . "gopkg.in/check.v1"
+       check "gopkg.in/check.v1"
 )
 
 var _ = Suite(&singularitySuite{})
@@ -39,6 +41,11 @@ func (s *singularitySuite) TestIPAddress(c *C) {
        // because uid=0 under arvados-dispatch-cloud. But in test
        // cases, uid!=0, which means --network=bridge is conditional
        // on --fakeroot.
+       uuc, err := os.ReadFile("/proc/sys/kernel/unprivileged_userns_clone")
+       c.Check(err, check.IsNil)
+       if string(uuc) == "0\n" {
+               c.Skip("insufficient privileges to run this test case -- `singularity exec --fakeroot` requires /proc/sys/kernel/unprivileged_userns_clone = 1")
+       }
        s.executor.(*singularityExecutor).fakeroot = true
        s.executorSuite.TestIPAddress(c)
 }
@@ -71,5 +78,5 @@ func (s *singularityStubSuite) TestSingularityExecArgs(c *C) {
        e.imageFilename = "/fake/image.sif"
        cmd := e.execCmd("./singularity")
        c.Check(cmd.Args, DeepEquals, []string{"./singularity", "exec", "--containall", "--cleanenv", "--pwd=/WorkingDir", "--net", "--network=none", "--nv", "--bind", "/hostpath:/mnt:ro", "/fake/image.sif"})
-       c.Check(cmd.Env, DeepEquals, []string{"SINGULARITYENV_FOO=bar"})
+       c.Check(cmd.Env, DeepEquals, []string{"SINGULARITYENV_FOO=bar", "SINGULARITY_NO_EVAL=1"})
 }