mockbackend_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package dockerfile
  2. import (
  3. "io"
  4. "time"
  5. "github.com/docker/distribution/reference"
  6. "github.com/docker/docker/api/types"
  7. "github.com/docker/docker/api/types/backend"
  8. "github.com/docker/docker/api/types/container"
  9. "github.com/docker/docker/builder"
  10. "github.com/docker/docker/image"
  11. "golang.org/x/net/context"
  12. )
  13. // MockBackend implements the builder.Backend interface for unit testing
  14. type MockBackend struct {
  15. getImageOnBuildFunc func(string) (builder.Image, error)
  16. getImageOnBuildImage *mockImage
  17. containerCreateFunc func(config types.ContainerCreateConfig) (container.ContainerCreateCreatedBody, error)
  18. commitFunc func(string, *backend.ContainerCommitConfig) (string, error)
  19. }
  20. func (m *MockBackend) GetImageOnBuild(name string) (builder.Image, error) {
  21. if m.getImageOnBuildFunc != nil {
  22. return m.getImageOnBuildFunc(name)
  23. }
  24. if m.getImageOnBuildImage != nil {
  25. return m.getImageOnBuildImage, nil
  26. }
  27. return &mockImage{id: "theid"}, nil
  28. }
  29. func (m *MockBackend) TagImageWithReference(image.ID, reference.Named) error {
  30. return nil
  31. }
  32. func (m *MockBackend) PullOnBuild(ctx context.Context, name string, authConfigs map[string]types.AuthConfig, output io.Writer) (builder.Image, error) {
  33. return nil, nil
  34. }
  35. func (m *MockBackend) ContainerAttachRaw(cID string, stdin io.ReadCloser, stdout, stderr io.Writer, stream bool, attached chan struct{}) error {
  36. return nil
  37. }
  38. func (m *MockBackend) ContainerCreate(config types.ContainerCreateConfig) (container.ContainerCreateCreatedBody, error) {
  39. if m.containerCreateFunc != nil {
  40. return m.containerCreateFunc(config)
  41. }
  42. return container.ContainerCreateCreatedBody{}, nil
  43. }
  44. func (m *MockBackend) ContainerRm(name string, config *types.ContainerRmConfig) error {
  45. return nil
  46. }
  47. func (m *MockBackend) Commit(cID string, cfg *backend.ContainerCommitConfig) (string, error) {
  48. if m.commitFunc != nil {
  49. return m.commitFunc(cID, cfg)
  50. }
  51. return "", nil
  52. }
  53. func (m *MockBackend) ContainerKill(containerID string, sig uint64) error {
  54. return nil
  55. }
  56. func (m *MockBackend) ContainerStart(containerID string, hostConfig *container.HostConfig, checkpoint string, checkpointDir string) error {
  57. return nil
  58. }
  59. func (m *MockBackend) ContainerWait(containerID string, timeout time.Duration) (int, error) {
  60. return 0, nil
  61. }
  62. func (m *MockBackend) ContainerUpdateCmdOnBuild(containerID string, cmd []string) error {
  63. return nil
  64. }
  65. func (m *MockBackend) ContainerCreateWorkdir(containerID string) error {
  66. return nil
  67. }
  68. func (m *MockBackend) CopyOnBuild(containerID string, destPath string, srcRoot string, srcPath string, decompress bool) error {
  69. return nil
  70. }
  71. func (m *MockBackend) HasExperimental() bool {
  72. return false
  73. }
  74. func (m *MockBackend) SquashImage(from string, to string) (string, error) {
  75. return "", nil
  76. }
  77. func (m *MockBackend) MountImage(name string) (string, func() error, error) {
  78. return "", func() error { return nil }, nil
  79. }
  80. type mockImage struct {
  81. id string
  82. config *container.Config
  83. }
  84. func (i *mockImage) ImageID() string {
  85. return i.id
  86. }
  87. func (i *mockImage) RunConfig() *container.Config {
  88. return i.config
  89. }
  90. type mockImageCache struct {
  91. getCacheFunc func(parentID string, cfg *container.Config) (string, error)
  92. }
  93. func (mic *mockImageCache) GetCache(parentID string, cfg *container.Config) (string, error) {
  94. if mic.getCacheFunc != nil {
  95. return mic.getCacheFunc(parentID, cfg)
  96. }
  97. return "", nil
  98. }