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

     1  // +build !remoteclient
     2  
     3  package integration
     4  
     5  import (
     6  	"os"
     7  	"path/filepath"
     8  
     9  	. "github.com/containers/libpod/test/utils"
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  )
    13  
    14  var _ = Describe("Podman import", func() {
    15  	var (
    16  		tempdir    string
    17  		err        error
    18  		podmanTest *PodmanTestIntegration
    19  	)
    20  
    21  	BeforeEach(func() {
    22  		tempdir, err = CreateTempDirInTempDir()
    23  		if err != nil {
    24  			os.Exit(1)
    25  		}
    26  		podmanTest = PodmanTestCreate(tempdir)
    27  		podmanTest.Setup()
    28  		podmanTest.SeedImages()
    29  	})
    30  
    31  	AfterEach(func() {
    32  		podmanTest.Cleanup()
    33  		f := CurrentGinkgoTestDescription()
    34  		processTestResult(f)
    35  
    36  	})
    37  
    38  	It("podman import with source and reference", func() {
    39  		outfile := filepath.Join(podmanTest.TempDir, "container.tar")
    40  		_, ec, cid := podmanTest.RunLsContainer("")
    41  		Expect(ec).To(Equal(0))
    42  
    43  		export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
    44  		export.WaitWithDefaultTimeout()
    45  		Expect(export.ExitCode()).To(Equal(0))
    46  
    47  		importImage := podmanTest.Podman([]string{"import", outfile, "foobar.com/imported-image:latest"})
    48  		importImage.WaitWithDefaultTimeout()
    49  		Expect(importImage.ExitCode()).To(Equal(0))
    50  
    51  		results := podmanTest.Podman([]string{"inspect", "--type", "image", "foobar.com/imported-image:latest"})
    52  		results.WaitWithDefaultTimeout()
    53  		Expect(results.ExitCode()).To(Equal(0))
    54  	})
    55  
    56  	It("podman import without reference", func() {
    57  		outfile := filepath.Join(podmanTest.TempDir, "container.tar")
    58  		_, ec, cid := podmanTest.RunLsContainer("")
    59  		Expect(ec).To(Equal(0))
    60  
    61  		export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
    62  		export.WaitWithDefaultTimeout()
    63  		Expect(export.ExitCode()).To(Equal(0))
    64  
    65  		importImage := podmanTest.PodmanNoCache([]string{"import", outfile})
    66  		importImage.WaitWithDefaultTimeout()
    67  		Expect(importImage.ExitCode()).To(Equal(0))
    68  
    69  		Expect(podmanTest.ImageExistsInMainStore(importImage.OutputToString())).To(BeTrue())
    70  	})
    71  
    72  	It("podman import with message flag", func() {
    73  		outfile := filepath.Join(podmanTest.TempDir, "container.tar")
    74  		_, ec, cid := podmanTest.RunLsContainer("")
    75  		Expect(ec).To(Equal(0))
    76  
    77  		export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
    78  		export.WaitWithDefaultTimeout()
    79  		Expect(export.ExitCode()).To(Equal(0))
    80  
    81  		importImage := podmanTest.Podman([]string{"import", "--message", "importing container test message", outfile, "imported-image"})
    82  		importImage.WaitWithDefaultTimeout()
    83  		Expect(importImage.ExitCode()).To(Equal(0))
    84  
    85  		results := podmanTest.Podman([]string{"history", "imported-image", "--format", "{{.Comment}}"})
    86  		results.WaitWithDefaultTimeout()
    87  		Expect(results.ExitCode()).To(Equal(0))
    88  		Expect(results.LineInOuputStartsWith("importing container test message")).To(BeTrue())
    89  	})
    90  
    91  	It("podman import with change flag CMD=<path>", func() {
    92  		outfile := filepath.Join(podmanTest.TempDir, "container.tar")
    93  		_, ec, cid := podmanTest.RunLsContainer("")
    94  		Expect(ec).To(Equal(0))
    95  
    96  		export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
    97  		export.WaitWithDefaultTimeout()
    98  		Expect(export.ExitCode()).To(Equal(0))
    99  
   100  		importImage := podmanTest.Podman([]string{"import", "--change", "CMD=/bin/bash", outfile, "imported-image"})
   101  		importImage.WaitWithDefaultTimeout()
   102  		Expect(importImage.ExitCode()).To(Equal(0))
   103  
   104  		results := podmanTest.Podman([]string{"inspect", "imported-image"})
   105  		results.WaitWithDefaultTimeout()
   106  		Expect(results.ExitCode()).To(Equal(0))
   107  		imageData := results.InspectImageJSON()
   108  		Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh"))
   109  		Expect(imageData[0].Config.Cmd[1]).To(Equal("-c"))
   110  		Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/bash"))
   111  	})
   112  
   113  	It("podman import with change flag CMD <path>", func() {
   114  		outfile := filepath.Join(podmanTest.TempDir, "container.tar")
   115  		_, ec, cid := podmanTest.RunLsContainer("")
   116  		Expect(ec).To(Equal(0))
   117  
   118  		export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
   119  		export.WaitWithDefaultTimeout()
   120  		Expect(export.ExitCode()).To(Equal(0))
   121  
   122  		importImage := podmanTest.Podman([]string{"import", "--change", "CMD /bin/sh", outfile, "imported-image"})
   123  		importImage.WaitWithDefaultTimeout()
   124  		Expect(importImage.ExitCode()).To(Equal(0))
   125  
   126  		results := podmanTest.Podman([]string{"inspect", "imported-image"})
   127  		results.WaitWithDefaultTimeout()
   128  		Expect(results.ExitCode()).To(Equal(0))
   129  		imageData := results.InspectImageJSON()
   130  		Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh"))
   131  		Expect(imageData[0].Config.Cmd[1]).To(Equal("-c"))
   132  		Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/sh"))
   133  	})
   134  
   135  	It("podman import with change flag CMD [\"path\",\"path'\"", func() {
   136  		outfile := filepath.Join(podmanTest.TempDir, "container.tar")
   137  		_, ec, cid := podmanTest.RunLsContainer("")
   138  		Expect(ec).To(Equal(0))
   139  
   140  		export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
   141  		export.WaitWithDefaultTimeout()
   142  		Expect(export.ExitCode()).To(Equal(0))
   143  
   144  		importImage := podmanTest.Podman([]string{"import", "--change", "CMD [\"/bin/bash\"]", outfile, "imported-image"})
   145  		importImage.WaitWithDefaultTimeout()
   146  		Expect(importImage.ExitCode()).To(Equal(0))
   147  
   148  		results := podmanTest.Podman([]string{"inspect", "imported-image"})
   149  		results.WaitWithDefaultTimeout()
   150  		Expect(results.ExitCode()).To(Equal(0))
   151  		imageData := results.InspectImageJSON()
   152  		Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/bash"))
   153  	})
   154  
   155  })