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