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  })