github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/run_entrypoint_test.go (about) 1 package integration 2 3 import ( 4 "os" 5 6 . "github.com/containers/podman/v2/test/utils" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 ) 10 11 var _ = Describe("Podman run entrypoint", func() { 12 var ( 13 tempdir string 14 err error 15 podmanTest *PodmanTestIntegration 16 ) 17 18 BeforeEach(func() { 19 tempdir, err = CreateTempDirInTempDir() 20 if err != nil { 21 os.Exit(1) 22 } 23 podmanTest = PodmanTestCreate(tempdir) 24 podmanTest.Setup() 25 podmanTest.SeedImages() 26 }) 27 28 AfterEach(func() { 29 podmanTest.Cleanup() 30 f := CurrentGinkgoTestDescription() 31 processTestResult(f) 32 33 }) 34 35 It("podman run no command, entrypoint, or cmd", func() { 36 dockerfile := `FROM quay.io/libpod/alpine:latest 37 ENTRYPOINT [] 38 CMD [] 39 ` 40 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 41 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) 42 session.WaitWithDefaultTimeout() 43 Expect(session.ExitCode()).To(Equal(125)) 44 }) 45 46 It("podman run entrypoint", func() { 47 dockerfile := `FROM quay.io/libpod/alpine:latest 48 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 49 ` 50 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 51 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) 52 session.WaitWithDefaultTimeout() 53 Expect(session.ExitCode()).To(Equal(0)) 54 Expect(len(session.OutputToStringArray())).To(Equal(2)) 55 }) 56 57 It("podman run entrypoint with cmd", func() { 58 dockerfile := `FROM quay.io/libpod/alpine:latest 59 CMD [ "-v"] 60 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 61 ` 62 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 63 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"}) 64 session.WaitWithDefaultTimeout() 65 Expect(session.ExitCode()).To(Equal(0)) 66 Expect(len(session.OutputToStringArray())).To(Equal(4)) 67 }) 68 69 It("podman run entrypoint with user cmd overrides image cmd", func() { 70 dockerfile := `FROM quay.io/libpod/alpine:latest 71 CMD [ "-v"] 72 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 73 ` 74 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 75 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest", "-i"}) 76 session.WaitWithDefaultTimeout() 77 Expect(session.ExitCode()).To(Equal(0)) 78 Expect(len(session.OutputToStringArray())).To(Equal(5)) 79 }) 80 81 It("podman run entrypoint with user cmd no image cmd", func() { 82 dockerfile := `FROM quay.io/libpod/alpine:latest 83 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 84 ` 85 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 86 session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest", "-i"}) 87 session.WaitWithDefaultTimeout() 88 Expect(session.ExitCode()).To(Equal(0)) 89 Expect(len(session.OutputToStringArray())).To(Equal(5)) 90 }) 91 92 It("podman run user entrypoint overrides image entrypoint and image cmd", func() { 93 SkipIfRemote("FIXME: podman-remote not handling passing --entrypoint=\"\" flag correctly") 94 dockerfile := `FROM quay.io/libpod/alpine:latest 95 CMD ["-i"] 96 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 97 ` 98 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 99 session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest"}) 100 session.WaitWithDefaultTimeout() 101 Expect(session.ExitCode()).To(Equal(0)) 102 Expect(session.LineInOutputStartsWith("Linux")).To(BeTrue()) 103 104 session = podmanTest.Podman([]string{"run", "--entrypoint", "", "foobar.com/entrypoint:latest", "uname"}) 105 session.WaitWithDefaultTimeout() 106 Expect(session.ExitCode()).To(Equal(0)) 107 Expect(session.LineInOutputStartsWith("Linux")).To(BeTrue()) 108 }) 109 110 It("podman run user entrypoint with command overrides image entrypoint and image cmd", func() { 111 dockerfile := `FROM quay.io/libpod/alpine:latest 112 CMD ["-i"] 113 ENTRYPOINT ["grep", "Alpine", "/etc/os-release"] 114 ` 115 podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false") 116 session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest", "-r"}) 117 session.WaitWithDefaultTimeout() 118 Expect(session.ExitCode()).To(Equal(0)) 119 Expect(session.LineInOutputStartsWith("Linux")).To(BeFalse()) 120 }) 121 })