github.phpd.cn/hashicorp/packer@v1.3.2/builder/docker/driver_mock.go (about) 1 package docker 2 3 import ( 4 "io" 5 6 "github.com/hashicorp/go-version" 7 ) 8 9 // MockDriver is a driver implementation that can be used for tests. 10 type MockDriver struct { 11 CommitCalled bool 12 CommitContainerId string 13 CommitImageId string 14 CommitErr error 15 16 DeleteImageCalled bool 17 DeleteImageId string 18 DeleteImageErr error 19 20 ImportCalled bool 21 ImportPath string 22 ImportRepo string 23 ImportId string 24 ImportErr error 25 26 IPAddressCalled bool 27 IPAddressID string 28 IPAddressResult string 29 IPAddressErr error 30 31 LoginCalled bool 32 LoginUsername string 33 LoginPassword string 34 LoginRepo string 35 LoginErr error 36 37 LogoutCalled bool 38 LogoutRepo string 39 LogoutErr error 40 41 PushCalled bool 42 PushName string 43 PushErr error 44 45 SaveImageCalled bool 46 SaveImageId string 47 SaveImageReader io.Reader 48 SaveImageError error 49 50 TagImageCalled bool 51 TagImageImageId string 52 TagImageRepo string 53 TagImageForce bool 54 TagImageErr error 55 56 ExportReader io.Reader 57 ExportError error 58 PullError error 59 StartID string 60 StartError error 61 StopError error 62 VerifyError error 63 64 ExportCalled bool 65 ExportID string 66 PullCalled bool 67 PullImage string 68 StartCalled bool 69 StartConfig *ContainerConfig 70 StopCalled bool 71 StopID string 72 VerifyCalled bool 73 74 VersionCalled bool 75 VersionVersion string 76 } 77 78 func (d *MockDriver) Commit(id string, author string, changes []string, message string) (string, error) { 79 d.CommitCalled = true 80 d.CommitContainerId = id 81 return d.CommitImageId, d.CommitErr 82 } 83 84 func (d *MockDriver) DeleteImage(id string) error { 85 d.DeleteImageCalled = true 86 d.DeleteImageId = id 87 return d.DeleteImageErr 88 } 89 90 func (d *MockDriver) Export(id string, dst io.Writer) error { 91 d.ExportCalled = true 92 d.ExportID = id 93 94 if d.ExportReader != nil { 95 _, err := io.Copy(dst, d.ExportReader) 96 if err != nil { 97 return err 98 } 99 } 100 101 return d.ExportError 102 } 103 104 func (d *MockDriver) Import(path, repo string) (string, error) { 105 d.ImportCalled = true 106 d.ImportPath = path 107 d.ImportRepo = repo 108 return d.ImportId, d.ImportErr 109 } 110 111 func (d *MockDriver) IPAddress(id string) (string, error) { 112 d.IPAddressCalled = true 113 d.IPAddressID = id 114 return d.IPAddressResult, d.IPAddressErr 115 } 116 117 func (d *MockDriver) Login(r, u, p string) error { 118 d.LoginCalled = true 119 d.LoginRepo = r 120 d.LoginUsername = u 121 d.LoginPassword = p 122 return d.LoginErr 123 } 124 125 func (d *MockDriver) Logout(r string) error { 126 d.LogoutCalled = true 127 d.LogoutRepo = r 128 return d.LogoutErr 129 } 130 131 func (d *MockDriver) Pull(image string) error { 132 d.PullCalled = true 133 d.PullImage = image 134 return d.PullError 135 } 136 137 func (d *MockDriver) Push(name string) error { 138 d.PushCalled = true 139 d.PushName = name 140 return d.PushErr 141 } 142 143 func (d *MockDriver) SaveImage(id string, dst io.Writer) error { 144 d.SaveImageCalled = true 145 d.SaveImageId = id 146 147 if d.SaveImageReader != nil { 148 _, err := io.Copy(dst, d.SaveImageReader) 149 if err != nil { 150 return err 151 } 152 } 153 154 return d.SaveImageError 155 } 156 157 func (d *MockDriver) StartContainer(config *ContainerConfig) (string, error) { 158 d.StartCalled = true 159 d.StartConfig = config 160 return d.StartID, d.StartError 161 } 162 163 func (d *MockDriver) StopContainer(id string) error { 164 d.StopCalled = true 165 d.StopID = id 166 return d.StopError 167 } 168 169 func (d *MockDriver) TagImage(id string, repo string, force bool) error { 170 d.TagImageCalled = true 171 d.TagImageImageId = id 172 d.TagImageRepo = repo 173 d.TagImageForce = force 174 return d.TagImageErr 175 } 176 177 func (d *MockDriver) Verify() error { 178 d.VerifyCalled = true 179 return d.VerifyError 180 } 181 182 func (d *MockDriver) Version() (*version.Version, error) { 183 d.VersionCalled = true 184 return version.NewVersion(d.VersionVersion) 185 }