github.com/containers/podman/v4@v4.9.4/test/e2e/run_cleanup_test.go (about) 1 package integration 2 3 import ( 4 . "github.com/containers/podman/v4/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 stop := podmanTest.Podman([]string{"stop", cid}) 30 stop.WaitWithDefaultTimeout() 31 Expect(stop).Should(ExitCleanly()) 32 33 // We have to force cleanup so the unmount happens 34 podmanCleanupSession := podmanTest.Podman([]string{"container", "cleanup", cid}) 35 podmanCleanupSession.WaitWithDefaultTimeout() 36 Expect(podmanCleanupSession).Should(ExitCleanly()) 37 38 mount = SystemExec("mount", nil) 39 Expect(mount).Should(ExitCleanly()) 40 Expect(mount.OutputToString()).NotTo(ContainSubstring(cid)) 41 42 pmount = podmanTest.Podman([]string{"mount", "--no-trunc"}) 43 pmount.WaitWithDefaultTimeout() 44 Expect(pmount).Should(ExitCleanly()) 45 Expect(pmount.OutputToString()).NotTo(ContainSubstring(cid)) 46 }) 47 48 It("podman run -d mount cleanup rootless test", func() { 49 SkipIfRemote("podman-remote does not support mount") 50 SkipIfNotRootless("Use unshare in rootless only") 51 52 result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"}) 53 result.WaitWithDefaultTimeout() 54 cid := result.OutputToString() 55 Expect(result).Should(ExitCleanly()) 56 57 mount := podmanTest.Podman([]string{"unshare", "mount"}) 58 mount.WaitWithDefaultTimeout() 59 Expect(mount).Should(ExitCleanly()) 60 Expect(mount.OutputToString()).To(ContainSubstring(cid)) 61 62 // command: podman <options> unshare podman <options> image mount ALPINE 63 args := []string{"unshare", podmanTest.PodmanBinary} 64 opts := podmanTest.PodmanMakeOptions([]string{"mount", "--no-trunc"}, false, false) 65 args = append(args, opts...) 66 67 pmount := podmanTest.Podman(args) 68 pmount.WaitWithDefaultTimeout() 69 Expect(pmount).Should(ExitCleanly()) 70 Expect(pmount.OutputToString()).To(ContainSubstring(cid)) 71 72 stop := podmanTest.Podman([]string{"stop", cid}) 73 stop.WaitWithDefaultTimeout() 74 Expect(stop).Should(ExitCleanly()) 75 76 // We have to force cleanup so the unmount happens 77 podmanCleanupSession := podmanTest.Podman([]string{"container", "cleanup", cid}) 78 podmanCleanupSession.WaitWithDefaultTimeout() 79 Expect(podmanCleanupSession).Should(ExitCleanly()) 80 81 mount = podmanTest.Podman([]string{"unshare", "mount"}) 82 mount.WaitWithDefaultTimeout() 83 Expect(mount).Should(ExitCleanly()) 84 Expect(mount.OutputToString()).NotTo(ContainSubstring(cid)) 85 86 pmount = podmanTest.Podman(args) 87 pmount.WaitWithDefaultTimeout() 88 Expect(pmount).Should(ExitCleanly()) 89 Expect(pmount.OutputToString()).NotTo(ContainSubstring(cid)) 90 }) 91 })