github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/container/client_test.go (about) 1 package container 2 3 import ( 4 "context" 5 "io" 6 7 "github.com/docker/docker/api/types" 8 "github.com/docker/docker/api/types/container" 9 "github.com/docker/docker/api/types/filters" 10 "github.com/docker/docker/api/types/image" 11 "github.com/docker/docker/api/types/network" 12 "github.com/docker/docker/api/types/system" 13 "github.com/docker/docker/client" 14 specs "github.com/opencontainers/image-spec/specs-go/v1" 15 ) 16 17 type fakeClient struct { 18 client.Client 19 inspectFunc func(string) (types.ContainerJSON, error) 20 execInspectFunc func(execID string) (types.ContainerExecInspect, error) 21 execCreateFunc func(containerID string, config types.ExecConfig) (types.IDResponse, error) 22 createContainerFunc func(config *container.Config, 23 hostConfig *container.HostConfig, 24 networkingConfig *network.NetworkingConfig, 25 platform *specs.Platform, 26 containerName string) (container.CreateResponse, error) 27 containerStartFunc func(containerID string, options container.StartOptions) error 28 imageCreateFunc func(parentReference string, options image.CreateOptions) (io.ReadCloser, error) 29 infoFunc func() (system.Info, error) 30 containerStatPathFunc func(containerID, path string) (types.ContainerPathStat, error) 31 containerCopyFromFunc func(containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) 32 logFunc func(string, container.LogsOptions) (io.ReadCloser, error) 33 waitFunc func(string) (<-chan container.WaitResponse, <-chan error) 34 containerListFunc func(container.ListOptions) ([]types.Container, error) 35 containerExportFunc func(string) (io.ReadCloser, error) 36 containerExecResizeFunc func(id string, options container.ResizeOptions) error 37 containerRemoveFunc func(ctx context.Context, containerID string, options container.RemoveOptions) error 38 containerKillFunc func(ctx context.Context, containerID, signal string) error 39 containerPruneFunc func(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error) 40 Version string 41 } 42 43 func (f *fakeClient) ContainerList(_ context.Context, options container.ListOptions) ([]types.Container, error) { 44 if f.containerListFunc != nil { 45 return f.containerListFunc(options) 46 } 47 return []types.Container{}, nil 48 } 49 50 func (f *fakeClient) ContainerInspect(_ context.Context, containerID string) (types.ContainerJSON, error) { 51 if f.inspectFunc != nil { 52 return f.inspectFunc(containerID) 53 } 54 return types.ContainerJSON{}, nil 55 } 56 57 func (f *fakeClient) ContainerExecCreate(_ context.Context, containerID string, config types.ExecConfig) (types.IDResponse, error) { 58 if f.execCreateFunc != nil { 59 return f.execCreateFunc(containerID, config) 60 } 61 return types.IDResponse{}, nil 62 } 63 64 func (f *fakeClient) ContainerExecInspect(_ context.Context, execID string) (types.ContainerExecInspect, error) { 65 if f.execInspectFunc != nil { 66 return f.execInspectFunc(execID) 67 } 68 return types.ContainerExecInspect{}, nil 69 } 70 71 func (f *fakeClient) ContainerExecStart(context.Context, string, types.ExecStartCheck) error { 72 return nil 73 } 74 75 func (f *fakeClient) ContainerCreate( 76 _ context.Context, 77 config *container.Config, 78 hostConfig *container.HostConfig, 79 networkingConfig *network.NetworkingConfig, 80 platform *specs.Platform, 81 containerName string, 82 ) (container.CreateResponse, error) { 83 if f.createContainerFunc != nil { 84 return f.createContainerFunc(config, hostConfig, networkingConfig, platform, containerName) 85 } 86 return container.CreateResponse{}, nil 87 } 88 89 func (f *fakeClient) ContainerRemove(ctx context.Context, containerID string, options container.RemoveOptions) error { 90 if f.containerRemoveFunc != nil { 91 return f.containerRemoveFunc(ctx, containerID, options) 92 } 93 return nil 94 } 95 96 func (f *fakeClient) ImageCreate(_ context.Context, parentReference string, options image.CreateOptions) (io.ReadCloser, error) { 97 if f.imageCreateFunc != nil { 98 return f.imageCreateFunc(parentReference, options) 99 } 100 return nil, nil 101 } 102 103 func (f *fakeClient) Info(_ context.Context) (system.Info, error) { 104 if f.infoFunc != nil { 105 return f.infoFunc() 106 } 107 return system.Info{}, nil 108 } 109 110 func (f *fakeClient) ContainerStatPath(_ context.Context, containerID, path string) (types.ContainerPathStat, error) { 111 if f.containerStatPathFunc != nil { 112 return f.containerStatPathFunc(containerID, path) 113 } 114 return types.ContainerPathStat{}, nil 115 } 116 117 func (f *fakeClient) CopyFromContainer(_ context.Context, containerID, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) { 118 if f.containerCopyFromFunc != nil { 119 return f.containerCopyFromFunc(containerID, srcPath) 120 } 121 return nil, types.ContainerPathStat{}, nil 122 } 123 124 func (f *fakeClient) ContainerLogs(_ context.Context, containerID string, options container.LogsOptions) (io.ReadCloser, error) { 125 if f.logFunc != nil { 126 return f.logFunc(containerID, options) 127 } 128 return nil, nil 129 } 130 131 func (f *fakeClient) ClientVersion() string { 132 return f.Version 133 } 134 135 func (f *fakeClient) ContainerWait(_ context.Context, containerID string, _ container.WaitCondition) (<-chan container.WaitResponse, <-chan error) { 136 if f.waitFunc != nil { 137 return f.waitFunc(containerID) 138 } 139 return nil, nil 140 } 141 142 func (f *fakeClient) ContainerStart(_ context.Context, containerID string, options container.StartOptions) error { 143 if f.containerStartFunc != nil { 144 return f.containerStartFunc(containerID, options) 145 } 146 return nil 147 } 148 149 func (f *fakeClient) ContainerExport(_ context.Context, containerID string) (io.ReadCloser, error) { 150 if f.containerExportFunc != nil { 151 return f.containerExportFunc(containerID) 152 } 153 return nil, nil 154 } 155 156 func (f *fakeClient) ContainerExecResize(_ context.Context, id string, options container.ResizeOptions) error { 157 if f.containerExecResizeFunc != nil { 158 return f.containerExecResizeFunc(id, options) 159 } 160 return nil 161 } 162 163 func (f *fakeClient) ContainerKill(ctx context.Context, containerID, signal string) error { 164 if f.containerKillFunc != nil { 165 return f.containerKillFunc(ctx, containerID, signal) 166 } 167 return nil 168 } 169 170 func (f *fakeClient) ContainersPrune(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error) { 171 if f.containerPruneFunc != nil { 172 return f.containerPruneFunc(ctx, pruneFilters) 173 } 174 return types.ContainersPruneReport{}, nil 175 }