on master help sign in
Fix bug where an Image's RepoTags is null

I'm not sure if this is perhaps a docker bug because it seemed that my docker daemon got perhaps in an illegal state. My assumption so far was always that if repo tags was null that the image will assume the tag "latest". Be as it may we have to support this case for now otherwise decoding the image list blows up.

commitc1c2f027978544c08a46f48d0831c00e3f98e1b6 authorDeni Bertovic <deni@denibertovic.com> dateSun 4 Sep 2016, 15:19 (10 years ago) parent18fefc4
2 files changed+10−5
src/Docker/Client/Types.hs+2−2 tests/tests.hs+8−3
src/Docker/Client/Types.hs+2−2
@@ -562,7 +562,7 @@ data Image = DockerImage {
562562 imageId :: ImageID
563563 , imageCreated :: Integer
564564 , imageParentId :: Maybe ImageID
565− , imageRepoTags :: [Tag]
565+ , imageRepoTags :: Maybe [Tag]
566566 , imageRepoDigests :: Maybe [Digest]
567567 , imageSize :: Integer
568568 , imageVirtualSize :: Integer
@@ -580,7 +580,7 @@ instance FromJSON Image where
580580 imageId <- o .: "Id"
581581 imageCreated <- o .: "Created"
582582 imageParentId <- o .:? "ParentId"
583− imageRepoTags <- o .: "RepoTags"
583+ imageRepoTags <- o .:? "RepoTags"
584584 imageRepoDigests <- o .:? "RepoDigests"
585585 imageSize <- o .: "Size"
586586 imageVirtualSize <- o .: "VirtualSize"
tests/tests.hs+8−3
@@ -51,9 +51,14 @@ testDockerVersion = runDocker $ do
5151
5252testFindImage :: IO ()
5353testFindImage = runDocker $ do
54− images <- listImages defaultListOpts >>= fromRight
55− let x = filter ((== [testImageName<>":latest"]) . imageRepoTags) images
56− lift $ assert $ length x == 1
54+ images <- listImages defaultListOpts >>= fromRight
55+ let xs = filter (tagFilter imageFullName) images
56+ lift $ assert $ length xs == 1
57+ where imageFullName = testImageName <> ":latest"
58+ tagFilter :: Text -> Image -> Bool
59+ tagFilter t i = case (imageRepoTags i) of
60+ Nothing -> False
61+ Just tags -> elem t tags
5762
5863testRunAndReadLog :: IO ()
5964testRunAndReadLog = runDocker $ do