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"
10
var _ = Describe("Podman container cleanup", func() {
13
SkipIfRemote("podman container cleanup is not supported in remote")
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"))
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))
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()
40
session = podmanTest.Podman([]string{"container", "cleanup", shortID})
41
session.WaitWithDefaultTimeout()
42
Expect(session).Should(ExitCleanly())
43
Expect(session.OutputToString()).To(Equal(shortID))
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"))
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()
62
session = podmanTest.Podman([]string{"container", "cleanup", "--all"})
63
session.WaitWithDefaultTimeout()
64
Expect(session).Should(ExitCleanly())
65
Expect(session.OutputToString()).To(Equal(cid))
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())
74
session = podmanTest.Podman([]string{"create", ALPINE, "ls"})
75
session.WaitWithDefaultTimeout()
76
Expect(session).Should(ExitCleanly())
77
cid := session.OutputToString()
79
session = podmanTest.Podman([]string{"container", "cleanup", "--latest"})
80
session.WaitWithDefaultTimeout()
81
Expect(session).Should(ExitCleanly())
82
Expect(session.OutputToString()).To(Equal(cid))
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"))
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"))
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())