github.com/AbhinandanKurakure/podman/v3@v3.4.10/test/e2e/run_entrypoint_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 6 . "github.com/containers/podman/v3/test/utils" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 . "github.com/onsi/gomega/gexec" 10 ) 11 12 var _ = Describe("Podman run entrypoint", 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 run no command, entrypoint, or cmd", func() { 37 dockerfile := `FROM quay.io/libpod/alpine:latest 38 ENTRYPOINT [] 39 CMD [] 40 ` 41 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 42 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) 43 session.WaitWithDefaultTimeout() 44 Expect(session).Should(Exit(125)) 45 }) 46 47 It("podman run entrypoint == [\"\"]", func() { 48 dockerfile := `FROM quay.io/libpod/alpine:latest 49 ENTRYPOINT [""] 50 CMD [] 51 ` 52 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 53 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest", "echo", "hello"}) 54 session.WaitWithDefaultTimeout() 55 Expect(session).Should(Exit(0)) 56 Expect(session.OutputToString()).To(Equal("hello")) 57 }) 58 59 It("podman run entrypoint", func() { 60 dockerfile := `FROM quay.io/libpod/alpine:latest 61 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 62 ` 63 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 64 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) 65 session.WaitWithDefaultTimeout() 66 Expect(session).Should(Exit(0)) 67 Expect(len(session.OutputToStringArray())).To(Equal(2)) 68 }) 69 70 It("podman run entrypoint with cmd", func() { 71 dockerfile := `FROM quay.io/libpod/alpine:latest 72 CMD [ "-v"] 73 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 74 ` 75 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 76 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) 77 session.WaitWithDefaultTimeout() 78 Expect(session).Should(Exit(0)) 79 Expect(len(session.OutputToStringArray())).To(Equal(4)) 80 }) 81 82 It("podman run entrypoint with user cmd overrides image cmd", func() { 83 dockerfile := `FROM quay.io/libpod/alpine:latest 84 CMD [ "-v"] 85 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 86 ` 87 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 88 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest", "-i"}) 89 session.WaitWithDefaultTimeout() 90 Expect(session).Should(Exit(0)) 91 Expect(len(session.OutputToStringArray())).To(Equal(5)) 92 }) 93 94 It("podman run entrypoint with user cmd no image cmd", func() { 95 dockerfile := `FROM quay.io/libpod/alpine:latest 96 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 97 ` 98 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 99 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest", "-i"}) 100 session.WaitWithDefaultTimeout() 101 Expect(session).Should(Exit(0)) 102 Expect(len(session.OutputToStringArray())).To(Equal(5)) 103 }) 104 105 It("podman run user entrypoint overrides image entrypoint and image cmd", func() { 106 dockerfile := `FROM quay.io/libpod/alpine:latest 107 CMD ["-i"] 108 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 109 ` 110 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 111 session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest"}) 112 session.WaitWithDefaultTimeout() 113 Expect(session).Should(Exit(0)) 114 Expect(session.LineInOutputStartsWith("Linux")).To(BeTrue()) 115 116 session = podmanTest.Podman([]string{"run", "--entrypoint", "", "foobar.com/entrypoint:latest", "uname"}) 117 session.WaitWithDefaultTimeout() 118 Expect(session).Should(Exit(0)) 119 Expect(session.LineInOutputStartsWith("Linux")).To(BeTrue()) 120 }) 121 122 It("podman run user entrypoint with command overrides image entrypoint and image cmd", func() { 123 dockerfile := `FROM quay.io/libpod/alpine:latest 124 CMD ["-i"] 125 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 126 ` 127 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 128 session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest", "-r"}) 129 session.WaitWithDefaultTimeout() 130 Expect(session).Should(Exit(0)) 131 Expect(session.LineInOutputStartsWith("Linux")).To(BeFalse()) 132 }) 133 })