github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/rm_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  
     7  	. "github.com/containers/libpod/test/utils"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("Podman rm", func() {
    13  	var (
    14  		tempdir    string
    15  		err        error
    16  		podmanTest *PodmanTestIntegration
    17  	)
    18  
    19  	BeforeEach(func() {
    20  		tempdir, err = CreateTempDirInTempDir()
    21  		if err != nil {
    22  			os.Exit(1)
    23  		}
    24  		podmanTest = PodmanTestCreate(tempdir)
    25  		podmanTest.Setup()
    26  		podmanTest.SeedImages()
    27  	})
    28  
    29  	AfterEach(func() {
    30  		podmanTest.Cleanup()
    31  		f := CurrentGinkgoTestDescription()
    32  		processTestResult(f)
    33  
    34  	})
    35  
    36  	It("podman rm stopped container", func() {
    37  		_, ec, cid := podmanTest.RunLsContainer("")
    38  		Expect(ec).To(Equal(0))
    39  
    40  		result := podmanTest.Podman([]string{"rm", cid})
    41  		result.WaitWithDefaultTimeout()
    42  		Expect(result.ExitCode()).To(Equal(0))
    43  	})
    44  
    45  	It("podman rm refuse to remove a running container", func() {
    46  		session := podmanTest.RunTopContainer("")
    47  		session.WaitWithDefaultTimeout()
    48  		Expect(session.ExitCode()).To(Equal(0))
    49  		cid := session.OutputToString()
    50  
    51  		result := podmanTest.Podman([]string{"rm", cid})
    52  		result.WaitWithDefaultTimeout()
    53  		Expect(result.ExitCode()).To(Equal(2))
    54  	})
    55  
    56  	It("podman rm created container", func() {
    57  		session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
    58  		session.WaitWithDefaultTimeout()
    59  		Expect(session.ExitCode()).To(Equal(0))
    60  		cid := session.OutputToString()
    61  
    62  		result := podmanTest.Podman([]string{"rm", cid})
    63  		result.WaitWithDefaultTimeout()
    64  		Expect(result.ExitCode()).To(Equal(0))
    65  	})
    66  
    67  	It("podman container rm created container", func() {
    68  		session := podmanTest.Podman([]string{"container", "create", ALPINE, "ls"})
    69  		session.WaitWithDefaultTimeout()
    70  		Expect(session.ExitCode()).To(Equal(0))
    71  		cid := session.OutputToString()
    72  
    73  		result := podmanTest.Podman([]string{"container", "rm", cid})
    74  		result.WaitWithDefaultTimeout()
    75  		Expect(result.ExitCode()).To(Equal(0))
    76  	})
    77  
    78  	It("podman rm running container with -f", func() {
    79  		session := podmanTest.RunTopContainer("")
    80  		session.WaitWithDefaultTimeout()
    81  		Expect(session.ExitCode()).To(Equal(0))
    82  		cid := session.OutputToString()
    83  
    84  		result := podmanTest.Podman([]string{"rm", "-f", cid})
    85  		result.WaitWithDefaultTimeout()
    86  		Expect(result.ExitCode()).To(Equal(0))
    87  	})
    88  
    89  	It("podman rm all containers", func() {
    90  		session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
    91  		session.WaitWithDefaultTimeout()
    92  		Expect(session.ExitCode()).To(Equal(0))
    93  
    94  		session = podmanTest.Podman([]string{"create", ALPINE, "ls"})
    95  		session.WaitWithDefaultTimeout()
    96  		Expect(session.ExitCode()).To(Equal(0))
    97  
    98  		session = podmanTest.Podman([]string{"create", ALPINE, "ls"})
    99  		session.WaitWithDefaultTimeout()
   100  		Expect(session.ExitCode()).To(Equal(0))
   101  
   102  		result := podmanTest.Podman([]string{"rm", "-a"})
   103  		result.WaitWithDefaultTimeout()
   104  		Expect(result.ExitCode()).To(Equal(0))
   105  	})
   106  
   107  	It("podman rm all containers with one running and short options", func() {
   108  		session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   109  		session.WaitWithDefaultTimeout()
   110  		Expect(session.ExitCode()).To(Equal(0))
   111  
   112  		session = podmanTest.Podman([]string{"create", ALPINE, "ls"})
   113  		session.WaitWithDefaultTimeout()
   114  		Expect(session.ExitCode()).To(Equal(0))
   115  
   116  		session = podmanTest.RunTopContainer("")
   117  		session.WaitWithDefaultTimeout()
   118  		Expect(session.ExitCode()).To(Equal(0))
   119  
   120  		result := podmanTest.Podman([]string{"rm", "-af"})
   121  		result.WaitWithDefaultTimeout()
   122  		Expect(result.ExitCode()).To(Equal(0))
   123  	})
   124  
   125  	It("podman rm the latest container", func() {
   126  		session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
   127  		session.WaitWithDefaultTimeout()
   128  		Expect(session.ExitCode()).To(Equal(0))
   129  
   130  		_, ec, cid := podmanTest.RunLsContainer("")
   131  		Expect(ec).To(Equal(0))
   132  
   133  		result := podmanTest.Podman([]string{"rm", "-l"})
   134  		result.WaitWithDefaultTimeout()
   135  		Expect(result.ExitCode()).To(Equal(0))
   136  		output := result.OutputToString()
   137  		Expect(output).To(ContainSubstring(cid))
   138  		Expect(podmanTest.NumberOfContainers()).To(Equal(1))
   139  
   140  	})
   141  
   142  	It("podman rm --cidfile", func() {
   143  		SkipIfRemote()
   144  
   145  		tmpDir, err := ioutil.TempDir("", "")
   146  		Expect(err).To(BeNil())
   147  		tmpFile := tmpDir + "cid"
   148  
   149  		defer os.RemoveAll(tmpDir)
   150  
   151  		session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, ALPINE, "ls"})
   152  		session.WaitWithDefaultTimeout()
   153  		Expect(session.ExitCode()).To(Equal(0))
   154  		cid := session.OutputToStringArray()[0]
   155  		Expect(podmanTest.NumberOfContainers()).To(Equal(1))
   156  
   157  		result := podmanTest.Podman([]string{"rm", "--cidfile", tmpFile})
   158  		result.WaitWithDefaultTimeout()
   159  		Expect(result.ExitCode()).To(Equal(0))
   160  		output := result.OutputToString()
   161  		Expect(output).To(ContainSubstring(cid))
   162  		Expect(podmanTest.NumberOfContainers()).To(Equal(0))
   163  	})
   164  
   165  	It("podman rm multiple --cidfile", func() {
   166  		SkipIfRemote()
   167  
   168  		tmpDir, err := ioutil.TempDir("", "")
   169  		Expect(err).To(BeNil())
   170  		tmpFile1 := tmpDir + "cid-1"
   171  		tmpFile2 := tmpDir + "cid-2"
   172  
   173  		defer os.RemoveAll(tmpDir)
   174  
   175  		session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile1, ALPINE, "ls"})
   176  		session.WaitWithDefaultTimeout()
   177  		Expect(session.ExitCode()).To(Equal(0))
   178  		cid1 := session.OutputToStringArray()[0]
   179  		Expect(podmanTest.NumberOfContainers()).To(Equal(1))
   180  
   181  		session = podmanTest.Podman([]string{"create", "--cidfile", tmpFile2, ALPINE, "ls"})
   182  		session.WaitWithDefaultTimeout()
   183  		Expect(session.ExitCode()).To(Equal(0))
   184  		cid2 := session.OutputToStringArray()[0]
   185  		Expect(podmanTest.NumberOfContainers()).To(Equal(2))
   186  
   187  		result := podmanTest.Podman([]string{"rm", "--cidfile", tmpFile1, "--cidfile", tmpFile2})
   188  		result.WaitWithDefaultTimeout()
   189  		Expect(result.ExitCode()).To(Equal(0))
   190  		output := result.OutputToString()
   191  		Expect(output).To(ContainSubstring(cid1))
   192  		Expect(output).To(ContainSubstring(cid2))
   193  		Expect(podmanTest.NumberOfContainers()).To(Equal(0))
   194  	})
   195  
   196  	It("podman rm invalid --latest and --cidfile and --all", func() {
   197  		SkipIfRemote()
   198  
   199  		result := podmanTest.Podman([]string{"rm", "--cidfile", "foobar", "--latest"})
   200  		result.WaitWithDefaultTimeout()
   201  		Expect(result.ExitCode()).To(Equal(125))
   202  
   203  		result = podmanTest.Podman([]string{"rm", "--cidfile", "foobar", "--all"})
   204  		result.WaitWithDefaultTimeout()
   205  		Expect(result.ExitCode()).To(Equal(125))
   206  
   207  		result = podmanTest.Podman([]string{"rm", "--cidfile", "foobar", "--all", "--latest"})
   208  		result.WaitWithDefaultTimeout()
   209  		Expect(result.ExitCode()).To(Equal(125))
   210  
   211  		result = podmanTest.Podman([]string{"rm", "--latest", "--all"})
   212  		result.WaitWithDefaultTimeout()
   213  		Expect(result.ExitCode()).To(Equal(125))
   214  	})
   215  
   216  	It("podman rm bogus container", func() {
   217  		session := podmanTest.Podman([]string{"rm", "bogus"})
   218  		session.WaitWithDefaultTimeout()
   219  		Expect(session.ExitCode()).To(Equal(1))
   220  	})
   221  
   222  	It("podman rm bogus container and a running container", func() {
   223  		session := podmanTest.RunTopContainer("test1")
   224  		session.WaitWithDefaultTimeout()
   225  		Expect(session.ExitCode()).To(Equal(0))
   226  
   227  		session = podmanTest.Podman([]string{"rm", "bogus", "test1"})
   228  		session.WaitWithDefaultTimeout()
   229  		Expect(session.ExitCode()).To(Equal(125))
   230  
   231  		session = podmanTest.Podman([]string{"rm", "test1", "bogus"})
   232  		session.WaitWithDefaultTimeout()
   233  		Expect(session.ExitCode()).To(Equal(125))
   234  	})
   235  
   236  	It("podman rm --ignore bogus container and a running container", func() {
   237  		SkipIfRemote()
   238  
   239  		session := podmanTest.RunTopContainer("test1")
   240  		session.WaitWithDefaultTimeout()
   241  		Expect(session.ExitCode()).To(Equal(0))
   242  
   243  		session = podmanTest.Podman([]string{"rm", "--force", "--ignore", "bogus", "test1"})
   244  		session.WaitWithDefaultTimeout()
   245  		Expect(session.ExitCode()).To(Equal(0))
   246  
   247  		session = podmanTest.Podman([]string{"rm", "--ignore", "test1", "bogus"})
   248  		session.WaitWithDefaultTimeout()
   249  		Expect(session.ExitCode()).To(Equal(0))
   250  	})
   251  })