github.com/containers/podman/v5@v5.1.0-rc1/test/e2e/run_cleanup_test.go (about)

     1  package integration
     2  
     3  import (
     4  	. "github.com/containers/podman/v5/test/utils"
     5  	. "github.com/onsi/ginkgo/v2"
     6  	. "github.com/onsi/gomega"
     7  )
     8  
     9  var _ = Describe("Podman run exit", func() {
    10  
    11  	It("podman run -d mount cleanup test", func() {
    12  		SkipIfRemote("podman-remote does not support mount")
    13  		SkipIfRootless("rootless podman mount requires podman unshare first")
    14  
    15  		result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
    16  		result.WaitWithDefaultTimeout()
    17  		cid := result.OutputToString()
    18  		Expect(result).Should(ExitCleanly())
    19  
    20  		mount := SystemExec("mount", nil)
    21  		Expect(mount).Should(ExitCleanly())
    22  		Expect(mount.OutputToString()).To(ContainSubstring(cid))
    23  
    24  		pmount := podmanTest.Podman([]string{"mount", "--no-trunc"})
    25  		pmount.WaitWithDefaultTimeout()
    26  		Expect(pmount).Should(ExitCleanly())
    27  		Expect(pmount.OutputToString()).To(ContainSubstring(cid))
    28  
    29  		podmanTest.StopContainer(cid)
    30  
    31  		// We have to force cleanup so the unmount happens
    32  		podmanCleanupSession := podmanTest.Podman([]string{"container", "cleanup", cid})
    33  		podmanCleanupSession.WaitWithDefaultTimeout()
    34  		Expect(podmanCleanupSession).Should(ExitCleanly())
    35  
    36  		mount = SystemExec("mount", nil)
    37  		Expect(mount).Should(ExitCleanly())
    38  		Expect(mount.OutputToString()).NotTo(ContainSubstring(cid))
    39  
    40  		pmount = podmanTest.Podman([]string{"mount", "--no-trunc"})
    41  		pmount.WaitWithDefaultTimeout()
    42  		Expect(pmount).Should(ExitCleanly())
    43  		Expect(pmount.OutputToString()).NotTo(ContainSubstring(cid))
    44  	})
    45  
    46  	It("podman run -d mount cleanup rootless test", func() {
    47  		SkipIfRemote("podman-remote does not support mount")
    48  		SkipIfNotRootless("Use unshare in rootless only")
    49  
    50  		result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
    51  		result.WaitWithDefaultTimeout()
    52  		cid := result.OutputToString()
    53  		Expect(result).Should(ExitCleanly())
    54  
    55  		mount := podmanTest.Podman([]string{"unshare", "mount"})
    56  		mount.WaitWithDefaultTimeout()
    57  		Expect(mount).Should(ExitCleanly())
    58  		Expect(mount.OutputToString()).To(ContainSubstring(cid))
    59  
    60  		// command: podman <options> unshare podman <options> image mount ALPINE
    61  		args := []string{"unshare", podmanTest.PodmanBinary}
    62  		opts := podmanTest.PodmanMakeOptions([]string{"mount", "--no-trunc"}, false, false)
    63  		args = append(args, opts...)
    64  
    65  		pmount := podmanTest.Podman(args)
    66  		pmount.WaitWithDefaultTimeout()
    67  		Expect(pmount).Should(ExitCleanly())
    68  		Expect(pmount.OutputToString()).To(ContainSubstring(cid))
    69  
    70  		podmanTest.StopContainer(cid)
    71  
    72  		// We have to force cleanup so the unmount happens
    73  		podmanCleanupSession := podmanTest.Podman([]string{"container", "cleanup", cid})
    74  		podmanCleanupSession.WaitWithDefaultTimeout()
    75  		Expect(podmanCleanupSession).Should(ExitCleanly())
    76  
    77  		mount = podmanTest.Podman([]string{"unshare", "mount"})
    78  		mount.WaitWithDefaultTimeout()
    79  		Expect(mount).Should(ExitCleanly())
    80  		Expect(mount.OutputToString()).NotTo(ContainSubstring(cid))
    81  
    82  		pmount = podmanTest.Podman(args)
    83  		pmount.WaitWithDefaultTimeout()
    84  		Expect(pmount).Should(ExitCleanly())
    85  		Expect(pmount.OutputToString()).NotTo(ContainSubstring(cid))
    86  	})
    87  })