github.com/containers/podman/v5@v5.1.0-rc1/test/e2e/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 . "github.com/onsi/gomega/gexec" 8 ) 9 10 var _ = Describe("Podman container cleanup", func() { 11 12 BeforeEach(func() { 13 SkipIfRemote("podman container cleanup is not supported in remote") 14 }) 15 16 It("podman cleanup bogus container", func() { 17 session := podmanTest.Podman([]string{"container", "cleanup", "foobar"}) 18 session.WaitWithDefaultTimeout() 19 Expect(session).Should(Exit(125)) 20 Expect(session.ErrorToString()).To(ContainSubstring("no such container")) 21 }) 22 23 It("podman cleanup container by id", func() { 24 session := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 25 session.WaitWithDefaultTimeout() 26 Expect(session).Should(ExitCleanly()) 27 cid := session.OutputToString() 28 session = podmanTest.Podman([]string{"container", "cleanup", cid}) 29 session.WaitWithDefaultTimeout() 30 Expect(session).Should(ExitCleanly()) 31 Expect(session.OutputToString()).To(Equal(cid)) 32 }) 33 34 It("podman cleanup container by short id", func() { 35 session := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 36 session.WaitWithDefaultTimeout() 37 Expect(session).Should(ExitCleanly()) 38 cid := session.OutputToString() 39 shortID := cid[0:10] 40 session = podmanTest.Podman([]string{"container", "cleanup", shortID}) 41 session.WaitWithDefaultTimeout() 42 Expect(session).Should(ExitCleanly()) 43 Expect(session.OutputToString()).To(Equal(shortID)) 44 }) 45 46 It("podman cleanup container by name", func() { 47 session := podmanTest.Podman([]string{"create", "--name", "foo", ALPINE, "ls"}) 48 session.WaitWithDefaultTimeout() 49 Expect(session).Should(ExitCleanly()) 50 session = podmanTest.Podman([]string{"container", "cleanup", "foo"}) 51 session.WaitWithDefaultTimeout() 52 Expect(session).Should(ExitCleanly()) 53 Expect(session.OutputToString()).To(Equal("foo")) 54 }) 55 56 It("podman cleanup all containers", func() { 57 session := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 58 session.WaitWithDefaultTimeout() 59 Expect(session).Should(ExitCleanly()) 60 cid := session.OutputToString() 61 62 session = podmanTest.Podman([]string{"container", "cleanup", "--all"}) 63 session.WaitWithDefaultTimeout() 64 Expect(session).Should(ExitCleanly()) 65 Expect(session.OutputToString()).To(Equal(cid)) 66 }) 67 68 It("podman cleanup latest container", func() { 69 SkipIfRemote("--latest flag n/a") 70 session := podmanTest.Podman([]string{"create", ALPINE, "ls"}) 71 session.WaitWithDefaultTimeout() 72 Expect(session).Should(ExitCleanly()) 73 74 session = podmanTest.Podman([]string{"create", ALPINE, "ls"}) 75 session.WaitWithDefaultTimeout() 76 Expect(session).Should(ExitCleanly()) 77 cid := session.OutputToString() 78 79 session = podmanTest.Podman([]string{"container", "cleanup", "--latest"}) 80 session.WaitWithDefaultTimeout() 81 Expect(session).Should(ExitCleanly()) 82 Expect(session.OutputToString()).To(Equal(cid)) 83 }) 84 85 It("podman cleanup running container", func() { 86 session := podmanTest.RunTopContainer("running") 87 session.WaitWithDefaultTimeout() 88 Expect(session).Should(ExitCleanly()) 89 session = podmanTest.Podman([]string{"container", "cleanup", "running"}) 90 session.WaitWithDefaultTimeout() 91 Expect(session).Should(Exit(125)) 92 Expect(session.ErrorToString()).To(ContainSubstring("container state improper")) 93 }) 94 95 It("podman cleanup paused container", func() { 96 SkipIfRootlessCgroupsV1("Pause is not supported in cgroups v1") 97 session := podmanTest.RunTopContainer("paused") 98 session.WaitWithDefaultTimeout() 99 Expect(session).Should(ExitCleanly()) 100 session = podmanTest.Podman([]string{"pause", "paused"}) 101 session.WaitWithDefaultTimeout() 102 Expect(session).Should(ExitCleanly()) 103 session = podmanTest.Podman([]string{"container", "cleanup", "paused"}) 104 session.WaitWithDefaultTimeout() 105 Expect(session).Should(Exit(125)) 106 Expect(session.ErrorToString()).To(ContainSubstring("container state improper")) 107 108 // unpause so that the cleanup can stop the container, 109 // otherwise it fails with container state improper 110 session = podmanTest.Podman([]string{"unpause", "paused"}) 111 session.WaitWithDefaultTimeout() 112 Expect(session).Should(ExitCleanly()) 113 }) 114 })