github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/test/e2e/run_env_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", 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 environment test", func() { 36 session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv", "HOME"}) 37 session.WaitWithDefaultTimeout() 38 Expect(session.ExitCode()).To(Equal(0)) 39 match, _ := session.GrepString("/root") 40 Expect(match).Should(BeTrue()) 41 42 session = podmanTest.Podman([]string{"run", "--rm", "--user", "2", ALPINE, "printenv", "HOME"}) 43 session.WaitWithDefaultTimeout() 44 Expect(session.ExitCode()).To(Equal(0)) 45 match, _ = session.GrepString("/sbin") 46 Expect(match).Should(BeTrue()) 47 48 session = podmanTest.Podman([]string{"run", "--rm", "--env", "HOME=/foo", ALPINE, "printenv", "HOME"}) 49 session.WaitWithDefaultTimeout() 50 Expect(session.ExitCode()).To(Equal(0)) 51 match, _ = session.GrepString("/foo") 52 Expect(match).Should(BeTrue()) 53 54 session = podmanTest.Podman([]string{"run", "--rm", "--env", "FOO=BAR,BAZ", ALPINE, "printenv", "FOO"}) 55 session.WaitWithDefaultTimeout() 56 Expect(session.ExitCode()).To(Equal(0)) 57 match, _ = session.GrepString("BAR,BAZ") 58 Expect(match).Should(BeTrue()) 59 60 session = podmanTest.Podman([]string{"run", "--rm", "--env", "PATH=/bin", ALPINE, "printenv", "PATH"}) 61 session.WaitWithDefaultTimeout() 62 Expect(session.ExitCode()).To(Equal(0)) 63 match, _ = session.GrepString("/bin") 64 Expect(match).Should(BeTrue()) 65 66 os.Setenv("FOO", "BAR") 67 session = podmanTest.Podman([]string{"run", "--rm", "--env", "FOO", ALPINE, "printenv", "FOO"}) 68 session.WaitWithDefaultTimeout() 69 Expect(session.ExitCode()).To(Equal(0)) 70 match, _ = session.GrepString("BAR") 71 Expect(match).Should(BeTrue()) 72 os.Unsetenv("FOO") 73 74 session = podmanTest.Podman([]string{"run", "--rm", "--env", "FOO", ALPINE, "printenv", "FOO"}) 75 session.WaitWithDefaultTimeout() 76 Expect(len(session.OutputToString())).To(Equal(0)) 77 Expect(session.ExitCode()).To(Equal(1)) 78 79 session = podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv"}) 80 session.WaitWithDefaultTimeout() 81 Expect(session.ExitCode()).To(Equal(0)) 82 83 // This currently does not work 84 // Re-enable when hostname is an env variable 85 session = podmanTest.Podman([]string{"run", "--rm", ALPINE, "sh", "-c", "printenv"}) 86 session.Wait(10) 87 Expect(session.ExitCode()).To(Equal(0)) 88 match, _ = session.GrepString("HOSTNAME") 89 Expect(match).Should(BeTrue()) 90 }) 91 92 It("podman run --env-host environment test", func() { 93 env := append(os.Environ(), "FOO=BAR") 94 session := podmanTest.PodmanAsUser([]string{"run", "--rm", "--env-host", ALPINE, "/bin/printenv", "FOO"}, 0, 0, "", env) 95 session.WaitWithDefaultTimeout() 96 if IsRemote() { 97 // podman-remote does not support --env-host 98 Expect(session.ExitCode()).To(Equal(125)) 99 Expect(session.ErrorToString()).To(ContainSubstring("unknown flag: --env-host")) 100 return 101 } 102 Expect(session.ExitCode()).To(Equal(0)) 103 match, _ := session.GrepString("BAR") 104 Expect(match).Should(BeTrue()) 105 106 session = podmanTest.PodmanAsUser([]string{"run", "--rm", "--env", "FOO=BAR1", "--env-host", ALPINE, "/bin/printenv", "FOO"}, 0, 0, "", env) 107 session.WaitWithDefaultTimeout() 108 Expect(session.ExitCode()).To(Equal(0)) 109 match, _ = session.GrepString("BAR1") 110 Expect(match).Should(BeTrue()) 111 os.Unsetenv("FOO") 112 }) 113 114 It("podman run --http-proxy test", func() { 115 os.Setenv("http_proxy", "1.2.3.4") 116 if IsRemote() { 117 podmanTest.StopRemoteService() 118 podmanTest.StartRemoteService() 119 } 120 session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "printenv", "http_proxy"}) 121 session.WaitWithDefaultTimeout() 122 Expect(session.ExitCode()).To(Equal(0)) 123 match, _ := session.GrepString("1.2.3.4") 124 Expect(match).Should(BeTrue()) 125 126 session = podmanTest.Podman([]string{"run", "--http-proxy=false", ALPINE, "printenv", "http_proxy"}) 127 session.WaitWithDefaultTimeout() 128 Expect(session.ExitCode()).To(Equal(1)) 129 Expect(session.OutputToString()).To(Equal("")) 130 131 session = podmanTest.Podman([]string{"run", "--env", "http_proxy=5.6.7.8", ALPINE, "printenv", "http_proxy"}) 132 session.WaitWithDefaultTimeout() 133 Expect(session.ExitCode()).To(Equal(0)) 134 match, _ = session.GrepString("5.6.7.8") 135 Expect(match).Should(BeTrue()) 136 os.Unsetenv("http_proxy") 137 138 session = podmanTest.Podman([]string{"run", "--http-proxy=false", "--env", "http_proxy=5.6.7.8", ALPINE, "printenv", "http_proxy"}) 139 session.WaitWithDefaultTimeout() 140 Expect(session.ExitCode()).To(Equal(0)) 141 match, _ = session.GrepString("5.6.7.8") 142 Expect(match).Should(BeTrue()) 143 os.Unsetenv("http_proxy") 144 }) 145 })