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 })