package config // import "github.com/docker/docker/daemon/config" import ( "os" "testing" "github.com/docker/docker/opts" "github.com/spf13/pflag" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" ) func TestDaemonConfigurationMerge(t *testing.T) { f, err := os.CreateTemp("", "docker-config-") if err != nil { t.Fatal(err) } configFile := f.Name() f.Write([]byte(` { "debug": true, "log-opts": { "tag": "test_tag" } }`)) f.Close() c := &Config{ CommonConfig: CommonConfig{ AutoRestart: true, LogConfig: LogConfig{ Type: "syslog", Config: map[string]string{"tag": "test"}, }, }, } flags := pflag.NewFlagSet("test", pflag.ContinueOnError) var debug bool flags.BoolVarP(&debug, "debug", "D", false, "") flags.Var(opts.NewNamedMapOpts("log-opts", nil, nil), "log-opt", "") cc, err := MergeDaemonConfigurations(c, flags, configFile) assert.NilError(t, err) assert.Check(t, cc.Debug) assert.Check(t, cc.AutoRestart) expectedLogConfig := LogConfig{ Type: "syslog", Config: map[string]string{"tag": "test_tag"}, } assert.Check(t, is.DeepEqual(expectedLogConfig, cc.LogConfig)) }