diff --git a/client/client_test.go b/client/client_test.go index fe452c7aa2..5ae3a51239 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -6,18 +6,19 @@ import ( "net/url" "os" "runtime" - "strings" "testing" "github.com/docker/docker/api" "github.com/docker/docker/api/types" "github.com/docker/docker/internal/testutil" + "github.com/gotestyourself/gotestyourself/env" "github.com/gotestyourself/gotestyourself/skip" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestNewEnvClient(t *testing.T) { - skip.IfCondition(t, runtime.GOOS == "windows") + skip.If(t, runtime.GOOS == "windows") testcases := []struct { doc string @@ -83,10 +84,9 @@ func TestNewEnvClient(t *testing.T) { }, } - env := envToMap() - defer mapToEnv(env) + defer env.PatchAll(t, nil)() for _, c := range testcases { - mapToEnv(c.envs) + env.PatchAll(t, c.envs) apiclient, err := NewEnvClient() if c.expectedError != "" { assert.Error(t, err, c.doc) @@ -196,16 +196,12 @@ func TestParseHostURL(t *testing.T) { } func TestNewEnvClientSetsDefaultVersion(t *testing.T) { - env := envToMap() - defer mapToEnv(env) - - envMap := map[string]string{ + defer env.PatchAll(t, map[string]string{ "DOCKER_HOST": "", "DOCKER_API_VERSION": "", "DOCKER_TLS_VERIFY": "", "DOCKER_CERT_PATH": "", - } - mapToEnv(envMap) + })() client, err := NewEnvClient() if err != nil { @@ -225,18 +221,10 @@ func TestNewEnvClientSetsDefaultVersion(t *testing.T) { // TestNegotiateAPIVersionEmpty asserts that client.Client can // negotiate a compatible APIVersion when omitted func TestNegotiateAPIVersionEmpty(t *testing.T) { - env := envToMap() - defer mapToEnv(env) - - envMap := map[string]string{ - "DOCKER_API_VERSION": "", - } - mapToEnv(envMap) + defer env.PatchAll(t, map[string]string{"DOCKER_API_VERSION": ""}) client, err := NewEnvClient() - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) ping := types.Ping{ APIVersion: "", @@ -260,12 +248,9 @@ func TestNegotiateAPIVersionEmpty(t *testing.T) { // negotiate a compatible APIVersion with the server func TestNegotiateAPIVersion(t *testing.T) { client, err := NewEnvClient() - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) expected := "1.21" - ping := types.Ping{ APIVersion: expected, OSType: "linux", @@ -291,18 +276,11 @@ func TestNegotiateAPIVersion(t *testing.T) { // TestNegotiateAPIVersionOverride asserts that we honor // the environment variable DOCKER_API_VERSION when negotianing versions func TestNegotiateAPVersionOverride(t *testing.T) { - env := envToMap() - defer mapToEnv(env) - - envMap := map[string]string{ - "DOCKER_API_VERSION": "9.99", - } - mapToEnv(envMap) + expected := "9.99" + defer env.PatchAll(t, map[string]string{"DOCKER_API_VERSION": expected})() client, err := NewEnvClient() - if err != nil { - t.Fatal(err) - } + require.NoError(t, err) ping := types.Ping{ APIVersion: "1.24", @@ -310,31 +288,11 @@ func TestNegotiateAPVersionOverride(t *testing.T) { Experimental: false, } - expected := envMap["DOCKER_API_VERSION"] - // test that we honored the env var client.NegotiateAPIVersionPing(ping) assert.Equal(t, expected, client.version) } -// mapToEnv takes a map of environment variables and sets them -func mapToEnv(env map[string]string) { - for k, v := range env { - os.Setenv(k, v) - } -} - -// envToMap returns a map of environment variables -func envToMap() map[string]string { - env := make(map[string]string) - for _, e := range os.Environ() { - kv := strings.SplitAfterN(e, "=", 2) - env[kv[0]] = kv[1] - } - - return env -} - type roundTripFunc func(*http.Request) (*http.Response, error) func (rtf roundTripFunc) RoundTrip(req *http.Request) (*http.Response, error) {