github.com/containers/libpod@v1.9.4-0.20220419124438-4284fd425507/test/e2e/run_entrypoint_test.go (about)

     1  // +build !remoteclient
     2  
     3  package integration
     4  
     5  import (
     6  	"os"
     7  
     8  	. "github.com/containers/libpod/test/utils"
     9  	. "github.com/onsi/ginkgo"
    10  	. "github.com/onsi/gomega"
    11  )
    12  
    13  var _ = Describe("Podman run entrypoint", func() {
    14  	var (
    15  		tempdir    string
    16  		err        error
    17  		podmanTest *PodmanTestIntegration
    18  	)
    19  
    20  	BeforeEach(func() {
    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 run no command, entrypoint, or cmd", func() {
    38  		dockerfile := `FROM docker.io/library/alpine:latest
    39  ENTRYPOINT []
    40  CMD []
    41  `
    42  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    43  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"})
    44  		session.WaitWithDefaultTimeout()
    45  		Expect(session.ExitCode()).To(Equal(125))
    46  	})
    47  
    48  	It("podman run entrypoint", func() {
    49  		dockerfile := `FROM docker.io/library/alpine:latest
    50  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
    51  `
    52  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    53  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"})
    54  		session.WaitWithDefaultTimeout()
    55  		Expect(session.ExitCode()).To(Equal(0))
    56  		Expect(len(session.OutputToStringArray())).To(Equal(2))
    57  	})
    58  
    59  	It("podman run entrypoint with cmd", func() {
    60  		dockerfile := `FROM docker.io/library/alpine:latest
    61  CMD [ "-v"]
    62  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
    63  `
    64  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    65  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest"})
    66  		session.WaitWithDefaultTimeout()
    67  		Expect(session.ExitCode()).To(Equal(0))
    68  		Expect(len(session.OutputToStringArray())).To(Equal(4))
    69  	})
    70  
    71  	It("podman run entrypoint with user cmd overrides image cmd", func() {
    72  		dockerfile := `FROM docker.io/library/alpine:latest
    73  CMD [ "-v"]
    74  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
    75  `
    76  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
    77  		session := podmanTest.Podman([]string{"run", "foobar.com/entrypoint:latest", "-i"})
    78  		session.WaitWithDefaultTimeout()
    79  		Expect(session.ExitCode()).To(Equal(0))
    80  		Expect(len(session.OutputToStringArray())).To(Equal(5))
    81  	})
    82  
    83  	It("podman run entrypoint with user cmd no image cmd", func() {
    84  		dockerfile := `FROM docker.io/library/alpine:latest
    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.ExitCode()).To(Equal(0))
    91  		Expect(len(session.OutputToStringArray())).To(Equal(5))
    92  	})
    93  
    94  	It("podman run user entrypoint overrides image entrypoint and image cmd", func() {
    95  		dockerfile := `FROM docker.io/library/alpine:latest
    96  CMD ["-i"]
    97  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
    98  `
    99  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
   100  		session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest"})
   101  		session.WaitWithDefaultTimeout()
   102  		Expect(session.ExitCode()).To(Equal(0))
   103  		Expect(session.LineInOuputStartsWith("Linux")).To(BeTrue())
   104  	})
   105  
   106  	It("podman run user entrypoint with command overrides image entrypoint and image cmd", func() {
   107  		dockerfile := `FROM docker.io/library/alpine:latest
   108  CMD ["-i"]
   109  ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
   110  `
   111  		podmanTest.BuildImage(dockerfile, "foobar.com/entrypoint:latest", "false")
   112  		session := podmanTest.Podman([]string{"run", "--entrypoint=uname", "foobar.com/entrypoint:latest", "-r"})
   113  		session.WaitWithDefaultTimeout()
   114  		Expect(session.ExitCode()).To(Equal(0))
   115  		Expect(session.LineInOuputStartsWith("Linux")).To(BeFalse())
   116  	})
   117  })