mirror of https://github.com/docker/cli.git
Fix `--label` behavior on run
Commit 2b17f4c8a8
fixed the way empty labels
are taken into account (i.e. not interpolated from environment variable),
but it created a regression.
`ValidateLabel` functions doesn't allow empty label value, but it has
always been possible to pass an empty label via the cli (`docker run --label foo`).
This fixes that by not validating the label flag.
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
This commit is contained in:
parent
ef7d8be86c
commit
31dc5c0a9a
|
@ -16,6 +16,7 @@ type fakeClient struct {
|
||||||
execInspectFunc func(execID string) (types.ContainerExecInspect, error)
|
execInspectFunc func(execID string) (types.ContainerExecInspect, error)
|
||||||
execCreateFunc func(container string, config types.ExecConfig) (types.IDResponse, error)
|
execCreateFunc func(container string, config types.ExecConfig) (types.IDResponse, error)
|
||||||
createContainerFunc func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (container.ContainerCreateCreatedBody, error)
|
createContainerFunc func(config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (container.ContainerCreateCreatedBody, error)
|
||||||
|
containerStartFunc func(container string, options types.ContainerStartOptions) error
|
||||||
imageCreateFunc func(parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error)
|
imageCreateFunc func(parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error)
|
||||||
infoFunc func() (types.Info, error)
|
infoFunc func() (types.Info, error)
|
||||||
containerStatPathFunc func(container, path string) (types.ContainerPathStat, error)
|
containerStatPathFunc func(container, path string) (types.ContainerPathStat, error)
|
||||||
|
@ -116,3 +117,10 @@ func (f *fakeClient) ContainerWait(_ context.Context, container string, _ contai
|
||||||
}
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *fakeClient) ContainerStart(_ context.Context, container string, options types.ContainerStartOptions) error {
|
||||||
|
if f.containerStartFunc != nil {
|
||||||
|
return f.containerStartFunc(container, options)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@ func addFlags(flags *pflag.FlagSet) *containerOptions {
|
||||||
expose: opts.NewListOpts(nil),
|
expose: opts.NewListOpts(nil),
|
||||||
extraHosts: opts.NewListOpts(opts.ValidateExtraHost),
|
extraHosts: opts.NewListOpts(opts.ValidateExtraHost),
|
||||||
groupAdd: opts.NewListOpts(nil),
|
groupAdd: opts.NewListOpts(nil),
|
||||||
labels: opts.NewListOpts(opts.ValidateLabel),
|
labels: opts.NewListOpts(nil),
|
||||||
labelsFile: opts.NewListOpts(nil),
|
labelsFile: opts.NewListOpts(nil),
|
||||||
linkLocalIPs: opts.NewListOpts(nil),
|
linkLocalIPs: opts.NewListOpts(nil),
|
||||||
links: opts.NewListOpts(opts.ValidateLink),
|
links: opts.NewListOpts(opts.ValidateLink),
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package container
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/cli/internal/test"
|
||||||
|
"github.com/docker/docker/api/types/container"
|
||||||
|
"github.com/docker/docker/api/types/network"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRunLabel(t *testing.T) {
|
||||||
|
cli := test.NewFakeCli(&fakeClient{
|
||||||
|
createContainerFunc: func(_ *container.Config, _ *container.HostConfig, _ *network.NetworkingConfig, _ string) (container.ContainerCreateCreatedBody, error) {
|
||||||
|
return container.ContainerCreateCreatedBody{
|
||||||
|
ID: "id",
|
||||||
|
}, nil
|
||||||
|
},
|
||||||
|
Version: "1.36",
|
||||||
|
})
|
||||||
|
cmd := NewRunCommand(cli)
|
||||||
|
cmd.Flags().Set("detach", "true")
|
||||||
|
cmd.SetArgs([]string{"--label", "foo", "busybox"})
|
||||||
|
assert.NoError(t, cmd.Execute())
|
||||||
|
}
|
Loading…
Reference in New Issue