github.com/containers/podman/v4@v4.9.4/test/e2e/run_entrypoint_test.go (about)

     1  package integration
     2  
     3  import (
     4  	. "github.com/containers/podman/v4/test/utils"
     5  	. "github.com/onsi/ginkgo/v2"
     6  	. "github.com/onsi/gomega"
     7  	. "github.com/onsi/gomega/gexec"
     8  )
     9  
    10  var _ = Describe("Podman run entrypoint", func() {
    11  
    12  	It("podman run no command, entrypoint, or cmd", func() {
    13  		dockerfile := `FROM quay.io/libpod/alpine:latest
    14  ENTRYPOINT []
    15  CMD []
    16  `
    17  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    18  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"})
    19  		session.WaitWithDefaultTimeout()
    20  		Expect(session).Should(Exit(125))
    21  	})
    22  
    23  	It("podman run entrypoint == [\"\"]", func() {
    24  		dockerfile := `FROM quay.io/libpod/alpine:latest
    25  ENTRYPOINT [""]
    26  CMD []
    27  `
    28  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    29  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest", "echo", "hello"})
    30  		session.WaitWithDefaultTimeout()
    31  		Expect(session).Should(ExitCleanly())
    32  		Expect(session.OutputToString()).To(Equal("hello"))
    33  	})
    34  
    35  	It("podman run entrypoint", func() {
    36  		dockerfile := `FROM quay.io/libpod/alpine:latest
    37  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
    38  `
    39  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    40  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"})
    41  		session.WaitWithDefaultTimeout()
    42  		Expect(session).Should(ExitCleanly())
    43  		Expect(session.OutputToStringArray()).To(HaveLen(2))
    44  	})
    45  
    46  	It("podman run entrypoint with cmd", func() {
    47  		dockerfile := `FROM quay.io/libpod/alpine:latest
    48  CMD [ "-v"]
    49  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
    50  `
    51  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    52  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"})
    53  		session.WaitWithDefaultTimeout()
    54  		Expect(session).Should(ExitCleanly())
    55  		Expect(session.OutputToStringArray()).To(HaveLen(4))
    56  	})
    57  
    58  	It("podman run entrypoint with user cmd overrides image cmd", func() {
    59  		dockerfile := `FROM quay.io/libpod/alpine:latest
    60  CMD [ "-v"]
    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", "-i"})
    65  		session.WaitWithDefaultTimeout()
    66  		Expect(session).Should(ExitCleanly())
    67  		Expect(session.OutputToStringArray()).To(HaveLen(5))
    68  	})
    69  
    70  	It("podman run entrypoint with user cmd no image cmd", func() {
    71  		dockerfile := `FROM quay.io/libpod/alpine:latest
    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).Should(ExitCleanly())
    78  		Expect(session.OutputToStringArray()).To(HaveLen(5))
    79  	})
    80  
    81  	It("podman run user entrypoint overrides image entrypoint and image cmd", func() {
    82  		dockerfile := `FROM quay.io/libpod/alpine:latest
    83  CMD ["-i"]
    84  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
    85  `
    86  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    87  		session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest"})
    88  		session.WaitWithDefaultTimeout()
    89  		Expect(session).Should(ExitCleanly())
    90  		Expect(session.OutputToStringArray()).To(ContainElement(HavePrefix("Linux")))
    91  
    92  		session = podmanTest.Podman([]string{"run", "--entrypoint", "", "foobar.com/entrypoint:latest", "uname"})
    93  		session.WaitWithDefaultTimeout()
    94  		Expect(session).Should(ExitCleanly())
    95  		Expect(session.OutputToStringArray()).To(ContainElement(HavePrefix("Linux")))
    96  	})
    97  
    98  	It("podman run user entrypoint with command overrides image entrypoint and image cmd", func() {
    99  		dockerfile := `FROM quay.io/libpod/alpine:latest
   100  CMD ["-i"]
   101  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
   102  `
   103  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
   104  		session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest", "-r"})
   105  		session.WaitWithDefaultTimeout()
   106  		Expect(session).Should(ExitCleanly())
   107  		Expect(session.OutputToStringArray()).To(Not(ContainElement(HavePrefix("Linux"))))
   108  	})
   109  })