@@ -3,13 +3,15 @@ package container
33import (
44 "time"
55
6+ "github.com/containrrr/watchtower/internal/util"
67 "github.com/containrrr/watchtower/pkg/container/mocks"
78 "github.com/containrrr/watchtower/pkg/filters"
89 t "github.com/containrrr/watchtower/pkg/types"
910
1011 "github.com/docker/docker/api/types"
1112 "github.com/docker/docker/api/types/backend"
1213 cli "github.com/docker/docker/client"
14+ "github.com/docker/docker/errdefs"
1315 "github.com/onsi/gomega/gbytes"
1416 "github.com/onsi/gomega/ghttp"
1517 "github.com/sirupsen/logrus"
@@ -103,6 +105,37 @@ var _ = Describe("the client", func() {
103105 })
104106 })
105107 })
108+ When ("removing a image" , func () {
109+ When ("debug logging is enabled" , func () {
110+ It ("should log removed and untagged images" , func () {
111+ imageA := util .GenerateRandomSHA256 ()
112+ imageAParent := util .GenerateRandomSHA256 ()
113+ images := map [string ][]string {imageA : {imageAParent }}
114+ mockServer .AppendHandlers (mocks .RemoveImageHandler (images ))
115+ c := dockerClient {api : docker }
116+
117+ resetLogrus , logbuf := captureLogrus (logrus .DebugLevel )
118+ defer resetLogrus ()
119+
120+ Expect (c .RemoveImageByID (t .ImageID (imageA ))).To (Succeed ())
121+
122+ shortA := t .ImageID (imageA ).ShortID ()
123+ shortAParent := t .ImageID (imageAParent ).ShortID ()
124+
125+ Eventually (logbuf ).Should (gbytes .Say (`deleted="%v, %v" untagged="?%v"?` , shortA , shortAParent , shortA ))
126+ })
127+ })
128+ When ("image is not found" , func () {
129+ It ("should return an error" , func () {
130+ image := util .GenerateRandomSHA256 ()
131+ mockServer .AppendHandlers (mocks .RemoveImageHandler (nil ))
132+ c := dockerClient {api : docker }
133+
134+ err := c .RemoveImageByID (t .ImageID (image ))
135+ Expect (errdefs .IsNotFound (err )).To (BeTrue ())
136+ })
137+ })
138+ })
106139 When ("listing containers" , func () {
107140 When ("no filter is provided" , func () {
108141 It ("should return all available containers" , func () {
@@ -193,10 +226,8 @@ var _ = Describe("the client", func() {
193226 }
194227
195228 // Capture logrus output in buffer
196- logbuf := gbytes .NewBuffer ()
197- origOut := logrus .StandardLogger ().Out
198- defer logrus .SetOutput (origOut )
199- logrus .SetOutput (logbuf )
229+ resetLogrus , logbuf := captureLogrus (logrus .DebugLevel )
230+ defer resetLogrus ()
200231
201232 user := ""
202233 containerID := t .ContainerID ("ex-cont-id" )
@@ -255,6 +286,23 @@ var _ = Describe("the client", func() {
255286 })
256287})
257288
289+ // Capture logrus output in buffer
290+ func captureLogrus (level logrus.Level ) (func (), * gbytes.Buffer ) {
291+
292+ logbuf := gbytes .NewBuffer ()
293+
294+ origOut := logrus .StandardLogger ().Out
295+ logrus .SetOutput (logbuf )
296+
297+ origLev := logrus .StandardLogger ().Level
298+ logrus .SetLevel (level )
299+
300+ return func () {
301+ logrus .SetOutput (origOut )
302+ logrus .SetLevel (origLev )
303+ }, logbuf
304+ }
305+
258306// Gomega matcher helpers
259307
260308func withContainerImageName (matcher gt.GomegaMatcher ) gt.GomegaMatcher {
0 commit comments