mirror of https://github.com/docker/cli.git
43 lines
1.3 KiB
Go
43 lines
1.3 KiB
Go
|
package plugin
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"io"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/docker/cli/cli/command"
|
||
|
"github.com/docker/cli/internal/test"
|
||
|
"github.com/docker/docker/api/types"
|
||
|
"github.com/pkg/errors"
|
||
|
"gotest.tools/v3/assert"
|
||
|
"gotest.tools/v3/golden"
|
||
|
)
|
||
|
|
||
|
func TestUpgradePromptTermination(t *testing.T) {
|
||
|
ctx, cancel := context.WithCancel(context.Background())
|
||
|
t.Cleanup(cancel)
|
||
|
|
||
|
cli := test.NewFakeCli(&fakeClient{
|
||
|
pluginUpgradeFunc: func(name string, options types.PluginInstallOptions) (io.ReadCloser, error) {
|
||
|
return nil, errors.New("should not be called")
|
||
|
},
|
||
|
pluginInspectFunc: func(name string) (*types.Plugin, []byte, error) {
|
||
|
return &types.Plugin{
|
||
|
ID: "5724e2c8652da337ab2eedd19fc6fc0ec908e4bd907c7421bf6a8dfc70c4c078",
|
||
|
Name: "foo/bar",
|
||
|
Enabled: false,
|
||
|
PluginReference: "localhost:5000/foo/bar:v0.1.0",
|
||
|
}, []byte{}, nil
|
||
|
},
|
||
|
})
|
||
|
cmd := newUpgradeCommand(cli)
|
||
|
// need to set a remote address that does not match the plugin
|
||
|
// reference sent by the `pluginInspectFunc`
|
||
|
cmd.SetArgs([]string{"foo/bar", "localhost:5000/foo/bar:v1.0.0"})
|
||
|
test.TerminatePrompt(ctx, t, cmd, cli, func(t *testing.T, err error) {
|
||
|
t.Helper()
|
||
|
assert.ErrorIs(t, err, command.ErrPromptTerminated)
|
||
|
})
|
||
|
golden.Assert(t, cli.OutBuffer().String(), "plugin-upgrade-terminate.golden")
|
||
|
}
|