#387 fix: switch to image id map and add additional tests

This commit is contained in:
Simon Aronsson 2020-01-11 00:28:27 +01:00
parent 4e000fa89c
commit 7b8b8e8ad9
9 changed files with 244 additions and 102 deletions

View file

@ -0,0 +1,72 @@
package mocks
import (
"errors"
"github.com/containrrr/watchtower/pkg/container"
"time"
t "github.com/containrrr/watchtower/pkg/types"
cli "github.com/docker/docker/client"
)
type MockClient struct {
TestData *TestData
api cli.CommonAPIClient
pullImages bool
removeVolumes bool
}
type TestData struct {
TriedToRemoveImageCount int
NameOfContainerToKeep string
Containers []container.Container
}
func (testdata *TestData) TriedToRemoveImage() bool {
return testdata.TriedToRemoveImageCount > 0
}
func CreateMockClient(data *TestData, api cli.CommonAPIClient, pullImages bool, removeVolumes bool) MockClient {
return MockClient {
data,
api,
pullImages,
removeVolumes,
}
}
func (client MockClient) ListContainers(f t.Filter) ([]container.Container, error) {
return client.TestData.Containers, nil
}
func (client MockClient) StopContainer(c container.Container, d time.Duration) error {
if c.Name() == client.TestData.NameOfContainerToKeep {
return errors.New("tried to stop the instance we want to keep")
}
return nil
}
func (client MockClient) StartContainer(c container.Container) (string, error) {
return "", nil
}
func (client MockClient) RenameContainer(c container.Container, s string) error {
return nil
}
func (client MockClient) RemoveImageByID(id string) error {
client.TestData.TriedToRemoveImageCount++
return nil
}
func (client MockClient) GetContainer(containerID string) (container.Container, error) {
return container.Container{}, nil
}
func (client MockClient) ExecuteCommand(containerID string, command string) error {
return nil
}
func (client MockClient) IsContainerStale(c container.Container) (bool, error) {
return true, nil
}