Remove the registerCompletionFuncForGlobalFlags for now, as the error it returned was ignored, so it didn't add much benefit, other than abstracting things. Split the underlying completion-functions to separate functions, and add some basic tests for them. Remove the completions helper, as it now didn't add much, and it saved having the dependency on the package. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/docker/cli/cli/context/store"
|
|
"github.com/spf13/cobra"
|
|
"gotest.tools/v3/assert"
|
|
is "gotest.tools/v3/assert/cmp"
|
|
)
|
|
|
|
type fakeCLI struct {
|
|
contextStore store.Store
|
|
}
|
|
|
|
func (c *fakeCLI) ContextStore() store.Store {
|
|
return c.contextStore
|
|
}
|
|
|
|
type fakeContextStore struct {
|
|
store.Store
|
|
names []string
|
|
}
|
|
|
|
func (f fakeContextStore) List() (c []store.Metadata, _ error) {
|
|
for _, name := range f.names {
|
|
c = append(c, store.Metadata{Name: name})
|
|
}
|
|
return c, nil
|
|
}
|
|
|
|
func TestCompleteContextNames(t *testing.T) {
|
|
expectedNames := []string{"context-b", "context-c", "context-a"}
|
|
cli := &fakeCLI{
|
|
contextStore: fakeContextStore{
|
|
names: expectedNames,
|
|
},
|
|
}
|
|
|
|
values, directives := completeContextNames(cli)(nil, nil, "")
|
|
assert.Check(t, is.Equal(directives, cobra.ShellCompDirectiveNoFileComp))
|
|
assert.Check(t, is.DeepEqual(values, expectedNames))
|
|
}
|
|
|
|
func TestCompleteLogLevels(t *testing.T) {
|
|
values, directives := completeLogLevels(nil, nil, "")
|
|
assert.Check(t, is.Equal(directives, cobra.ShellCompDirectiveNoFileComp))
|
|
assert.Check(t, is.DeepEqual(values, logLevels))
|
|
}
|