mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
integ-cli: also preserve SystemRoot env var
Windows CI fails to dial remote test host over tcp in the test cases where we clear environment variables during `exec(dockerBinary, ...)` in the absence of `SystemRoot` environment variable (typically points to `c:\windows`). This fixes tests: - `TestRunEnvironmentErase` - `TestRunEnvironmentOverride` Signed-off-by: Ahmet Alp Balkan <ahmetalpbalkan@gmail.com>
This commit is contained in:
parent
faa6fd40f4
commit
d18689dff7
3 changed files with 20 additions and 9 deletions
|
@ -9,7 +9,7 @@ import (
|
||||||
|
|
||||||
func TestCliProxyDisableProxyUnixSock(t *testing.T) {
|
func TestCliProxyDisableProxyUnixSock(t *testing.T) {
|
||||||
cmd := exec.Command(dockerBinary, "info")
|
cmd := exec.Command(dockerBinary, "info")
|
||||||
cmd.Env = appendDockerHostEnv([]string{"HTTP_PROXY=http://127.0.0.1:9999"})
|
cmd.Env = appendBaseEnv([]string{"HTTP_PROXY=http://127.0.0.1:9999"})
|
||||||
|
|
||||||
if out, _, err := runCommandWithOutput(cmd); err != nil {
|
if out, _, err := runCommandWithOutput(cmd); err != nil {
|
||||||
t.Fatal(err, out)
|
t.Fatal(err, out)
|
||||||
|
|
|
@ -869,7 +869,7 @@ func TestRunEnvironmentErase(t *testing.T) {
|
||||||
defer deleteAllContainers()
|
defer deleteAllContainers()
|
||||||
|
|
||||||
cmd := exec.Command(dockerBinary, "run", "-e", "FOO", "-e", "HOSTNAME", "busybox", "env")
|
cmd := exec.Command(dockerBinary, "run", "-e", "FOO", "-e", "HOSTNAME", "busybox", "env")
|
||||||
cmd.Env = appendDockerHostEnv([]string{})
|
cmd.Env = appendBaseEnv([]string{})
|
||||||
|
|
||||||
out, _, err := runCommandWithOutput(cmd)
|
out, _, err := runCommandWithOutput(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -908,7 +908,7 @@ func TestRunEnvironmentOverride(t *testing.T) {
|
||||||
defer deleteAllContainers()
|
defer deleteAllContainers()
|
||||||
|
|
||||||
cmd := exec.Command(dockerBinary, "run", "-e", "HOSTNAME", "-e", "HOME=/root2", "busybox", "env")
|
cmd := exec.Command(dockerBinary, "run", "-e", "HOSTNAME", "-e", "HOME=/root2", "busybox", "env")
|
||||||
cmd.Env = appendDockerHostEnv([]string{"HOSTNAME=bar"})
|
cmd.Env = appendBaseEnv([]string{"HOSTNAME=bar"})
|
||||||
|
|
||||||
out, _, err := runCommandWithOutput(cmd)
|
out, _, err := runCommandWithOutput(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -919,12 +919,23 @@ func setupRegistry(t *testing.T) func() {
|
||||||
return func() { reg.Close() }
|
return func() { reg.Close() }
|
||||||
}
|
}
|
||||||
|
|
||||||
// appendDockerHostEnv adds given env slice DOCKER_HOST value if set in the
|
// appendBaseEnv appends the minimum set of environment variables to exec the
|
||||||
// environment. Useful when environment is cleared but we want to preserve DOCKER_HOST
|
// docker cli binary for testing with correct configuration to the given env
|
||||||
// to execute tests against a remote daemon.
|
// list.
|
||||||
func appendDockerHostEnv(env []string) []string {
|
func appendBaseEnv(env []string) []string {
|
||||||
if dockerHost := os.Getenv("DOCKER_HOST"); dockerHost != "" {
|
preserveList := []string{
|
||||||
env = append(env, fmt.Sprintf("DOCKER_HOST=%s", dockerHost))
|
// preserve remote test host
|
||||||
|
"DOCKER_HOST",
|
||||||
|
|
||||||
|
// windows: requires preserving SystemRoot, otherwise dial tcp fails
|
||||||
|
// with "GetAddrInfoW: A non-recoverable error occurred during a database lookup."
|
||||||
|
"SystemRoot",
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, key := range preserveList {
|
||||||
|
if val := os.Getenv(key); val != "" {
|
||||||
|
env = append(env, fmt.Sprintf("%s=%s", key, val))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return env
|
return env
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue