github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/rm_test.go (about)

     1  package integration
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  
     7  	. "github.com/containers/podman/v2/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("test1")
   131  		Expect(ec).To(Equal(0))
   132  
   133  		latest := "-l"
   134  		if IsRemote() {
   135  			latest = "test1"
   136  		}
   137  		result := podmanTest.Podman([]string{"rm", latest})
   138  		result.WaitWithDefaultTimeout()
   139  		Expect(result.ExitCode()).To(Equal(0))
   140  		output := result.OutputToString()
   141  		Expect(output).To(ContainSubstring(cid))
   142  		Expect(podmanTest.NumberOfContainers()).To(Equal(1))
   143  
   144  	})
   145  
   146  	It("podman rm --cidfile", func() {
   147  
   148  		tmpDir, err := ioutil.TempDir("", "")
   149  		Expect(err).To(BeNil())
   150  		tmpFile := tmpDir + "cid"
   151  
   152  		defer os.RemoveAll(tmpDir)
   153  
   154  		session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile, ALPINE, "ls"})
   155  		session.WaitWithDefaultTimeout()
   156  		Expect(session.ExitCode()).To(Equal(0))
   157  		cid := session.OutputToStringArray()[0]
   158  		Expect(podmanTest.NumberOfContainers()).To(Equal(1))
   159  
   160  		result := podmanTest.Podman([]string{"rm", "--cidfile", tmpFile})
   161  		result.WaitWithDefaultTimeout()
   162  		Expect(result.ExitCode()).To(Equal(0))
   163  		output := result.OutputToString()
   164  		Expect(output).To(ContainSubstring(cid))
   165  		Expect(podmanTest.NumberOfContainers()).To(Equal(0))
   166  	})
   167  
   168  	It("podman rm multiple --cidfile", func() {
   169  
   170  		tmpDir, err := ioutil.TempDir("", "")
   171  		Expect(err).To(BeNil())
   172  		tmpFile1 := tmpDir + "cid-1"
   173  		tmpFile2 := tmpDir + "cid-2"
   174  
   175  		defer os.RemoveAll(tmpDir)
   176  
   177  		session := podmanTest.Podman([]string{"create", "--cidfile", tmpFile1, ALPINE, "ls"})
   178  		session.WaitWithDefaultTimeout()
   179  		Expect(session.ExitCode()).To(Equal(0))
   180  		cid1 := session.OutputToStringArray()[0]
   181  		Expect(podmanTest.NumberOfContainers()).To(Equal(1))
   182  
   183  		session = podmanTest.Podman([]string{"create", "--cidfile", tmpFile2, ALPINE, "ls"})
   184  		session.WaitWithDefaultTimeout()
   185  		Expect(session.ExitCode()).To(Equal(0))
   186  		cid2 := session.OutputToStringArray()[0]
   187  		Expect(podmanTest.NumberOfContainers()).To(Equal(2))
   188  
   189  		result := podmanTest.Podman([]string{"rm", "--cidfile", tmpFile1, "--cidfile", tmpFile2})
   190  		result.WaitWithDefaultTimeout()
   191  		Expect(result.ExitCode()).To(Equal(0))
   192  		output := result.OutputToString()
   193  		Expect(output).To(ContainSubstring(cid1))
   194  		Expect(output).To(ContainSubstring(cid2))
   195  		Expect(podmanTest.NumberOfContainers()).To(Equal(0))
   196  	})
   197  
   198  	It("podman rm invalid --latest and --cidfile and --all", func() {
   199  		SkipIfRemote("Verifying --latest flag")
   200  
   201  		result := podmanTest.Podman([]string{"rm", "--cidfile", "foobar", "--latest"})
   202  		result.WaitWithDefaultTimeout()
   203  		Expect(result.ExitCode()).To(Equal(125))
   204  
   205  		result = podmanTest.Podman([]string{"rm", "--cidfile", "foobar", "--all"})
   206  		result.WaitWithDefaultTimeout()
   207  		Expect(result.ExitCode()).To(Equal(125))
   208  
   209  		result = podmanTest.Podman([]string{"rm", "--cidfile", "foobar", "--all", "--latest"})
   210  		result.WaitWithDefaultTimeout()
   211  		Expect(result.ExitCode()).To(Equal(125))
   212  
   213  		result = podmanTest.Podman([]string{"rm", "--latest", "--all"})
   214  		result.WaitWithDefaultTimeout()
   215  		Expect(result.ExitCode()).To(Equal(125))
   216  	})
   217  
   218  	It("podman rm bogus container", func() {
   219  		session := podmanTest.Podman([]string{"rm", "bogus"})
   220  		session.WaitWithDefaultTimeout()
   221  		Expect(session.ExitCode()).To(Equal(1))
   222  	})
   223  
   224  	It("podman rm bogus container and a running container", func() {
   225  		session := podmanTest.RunTopContainer("test1")
   226  		session.WaitWithDefaultTimeout()
   227  		Expect(session.ExitCode()).To(Equal(0))
   228  
   229  		session = podmanTest.Podman([]string{"rm", "bogus", "test1"})
   230  		session.WaitWithDefaultTimeout()
   231  		Expect(session.ExitCode()).To(Equal(1))
   232  
   233  		session = podmanTest.Podman([]string{"rm", "test1", "bogus"})
   234  		session.WaitWithDefaultTimeout()
   235  		Expect(session.ExitCode()).To(Equal(1))
   236  	})
   237  
   238  	It("podman rm --ignore bogus container and a running container", func() {
   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  })