github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/import_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 "path/filepath" 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 import", func() { 13 var ( 14 tempdir string 15 err error 16 podmanTest *PodmanTestIntegration 17 ) 18 19 BeforeEach(func() { 20 SkipIfRemote("FIXME: These look like it is supposed to work in remote") 21 tempdir, err = CreateTempDirInTempDir() 22 if err != nil { 23 os.Exit(1) 24 } 25 podmanTest = PodmanTestCreate(tempdir) 26 podmanTest.Setup() 27 podmanTest.SeedImages() 28 }) 29 30 AfterEach(func() { 31 podmanTest.Cleanup() 32 f := CurrentGinkgoTestDescription() 33 processTestResult(f) 34 35 }) 36 37 It("podman import with source and reference", func() { 38 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 39 _, ec, cid := podmanTest.RunLsContainer("") 40 Expect(ec).To(Equal(0)) 41 42 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 43 export.WaitWithDefaultTimeout() 44 Expect(export.ExitCode()).To(Equal(0)) 45 46 importImage := podmanTest.Podman([]string{"import", outfile, "foobar.com/imported-image:latest"}) 47 importImage.WaitWithDefaultTimeout() 48 Expect(importImage.ExitCode()).To(Equal(0)) 49 50 results := podmanTest.Podman([]string{"inspect", "--type", "image", "foobar.com/imported-image:latest"}) 51 results.WaitWithDefaultTimeout() 52 Expect(results.ExitCode()).To(Equal(0)) 53 }) 54 55 It("podman import without reference", func() { 56 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 57 _, ec, cid := podmanTest.RunLsContainer("") 58 Expect(ec).To(Equal(0)) 59 60 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 61 export.WaitWithDefaultTimeout() 62 Expect(export.ExitCode()).To(Equal(0)) 63 64 importImage := podmanTest.Podman([]string{"import", outfile}) 65 importImage.WaitWithDefaultTimeout() 66 Expect(importImage.ExitCode()).To(Equal(0)) 67 68 // tag the image which proves it is in R/W storage 69 tag := podmanTest.Podman([]string{"tag", importImage.OutputToString(), "foo"}) 70 tag.WaitWithDefaultTimeout() 71 Expect(tag.ExitCode()).To(BeZero()) 72 }) 73 74 It("podman import with message flag", func() { 75 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 76 _, ec, cid := podmanTest.RunLsContainer("") 77 Expect(ec).To(Equal(0)) 78 79 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 80 export.WaitWithDefaultTimeout() 81 Expect(export.ExitCode()).To(Equal(0)) 82 83 importImage := podmanTest.Podman([]string{"import", "--message", "importing container test message", outfile, "imported-image"}) 84 importImage.WaitWithDefaultTimeout() 85 Expect(importImage.ExitCode()).To(Equal(0)) 86 87 results := podmanTest.Podman([]string{"history", "imported-image", "--format", "{{.Comment}}"}) 88 results.WaitWithDefaultTimeout() 89 Expect(results.ExitCode()).To(Equal(0)) 90 Expect(results.LineInOutputStartsWith("importing container test message")).To(BeTrue()) 91 }) 92 93 It("podman import with change flag CMD=<path>", func() { 94 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 95 _, ec, cid := podmanTest.RunLsContainer("") 96 Expect(ec).To(Equal(0)) 97 98 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 99 export.WaitWithDefaultTimeout() 100 Expect(export.ExitCode()).To(Equal(0)) 101 102 importImage := podmanTest.Podman([]string{"import", "--change", "CMD=/bin/bash", outfile, "imported-image"}) 103 importImage.WaitWithDefaultTimeout() 104 Expect(importImage.ExitCode()).To(Equal(0)) 105 106 results := podmanTest.Podman([]string{"inspect", "imported-image"}) 107 results.WaitWithDefaultTimeout() 108 Expect(results.ExitCode()).To(Equal(0)) 109 imageData := results.InspectImageJSON() 110 Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh")) 111 Expect(imageData[0].Config.Cmd[1]).To(Equal("-c")) 112 Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/bash")) 113 }) 114 115 It("podman import with change flag CMD <path>", func() { 116 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 117 _, ec, cid := podmanTest.RunLsContainer("") 118 Expect(ec).To(Equal(0)) 119 120 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 121 export.WaitWithDefaultTimeout() 122 Expect(export.ExitCode()).To(Equal(0)) 123 124 importImage := podmanTest.Podman([]string{"import", "--change", "CMD /bin/sh", outfile, "imported-image"}) 125 importImage.WaitWithDefaultTimeout() 126 Expect(importImage.ExitCode()).To(Equal(0)) 127 128 results := podmanTest.Podman([]string{"inspect", "imported-image"}) 129 results.WaitWithDefaultTimeout() 130 Expect(results.ExitCode()).To(Equal(0)) 131 imageData := results.InspectImageJSON() 132 Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh")) 133 Expect(imageData[0].Config.Cmd[1]).To(Equal("-c")) 134 Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/sh")) 135 }) 136 137 It("podman import with change flag CMD [\"path\",\"path'\"", func() { 138 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 139 _, ec, cid := podmanTest.RunLsContainer("") 140 Expect(ec).To(Equal(0)) 141 142 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 143 export.WaitWithDefaultTimeout() 144 Expect(export.ExitCode()).To(Equal(0)) 145 146 importImage := podmanTest.Podman([]string{"import", "--change", "CMD [\"/bin/bash\"]", outfile, "imported-image"}) 147 importImage.WaitWithDefaultTimeout() 148 Expect(importImage.ExitCode()).To(Equal(0)) 149 150 results := podmanTest.Podman([]string{"inspect", "imported-image"}) 151 results.WaitWithDefaultTimeout() 152 Expect(results.ExitCode()).To(Equal(0)) 153 imageData := results.InspectImageJSON() 154 Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/bash")) 155 }) 156 157 It("podman import with signature", func() { 158 outfile := filepath.Join(podmanTest.TempDir, "container.tar") 159 _, ec, cid := podmanTest.RunLsContainer("") 160 Expect(ec).To(Equal(0)) 161 162 export := podmanTest.Podman([]string{"export", "-o", outfile, cid}) 163 export.WaitWithDefaultTimeout() 164 Expect(export.ExitCode()).To(Equal(0)) 165 166 importImage := podmanTest.Podman([]string{"import", "--signature-policy", "/no/such/file", outfile}) 167 importImage.WaitWithDefaultTimeout() 168 Expect(importImage.ExitCode()).To(Not(Equal(0))) 169 170 result := podmanTest.Podman([]string{"import", "--signature-policy", "/etc/containers/policy.json", outfile}) 171 result.WaitWithDefaultTimeout() 172 Expect(result.ExitCode()).To(Equal(0)) 173 }) 174 })