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