hadolint-2.11.0: test/Hadolint/Rule/DL3057Spec.hs
module Hadolint.Rule.DL3057Spec (spec) where
import Data.Default
import Data.Text as Text
import Helpers
import Test.Hspec
spec :: SpecWith ()
spec = do
let ?config = def
describe "DL3057 - `HEALTHCHECK instruction missing" $ do
it "warn with no HEALTHCHECK instructions" $ do
let dockerfile = Text.unlines
[ "FROM scratch"
]
in ruleCatches "DL3057" dockerfile
it "ok when HEALTHCHECK is explicitly disabled" $ do
let dockerfile = Text.unlines
[ "FROM scratch",
"HEALTHCHECK NONE"
]
in ruleCatchesNot "DL3057" dockerfile
it "ok with one HEALTHCHECK instruction" $ do
let dockerfile = Text.unlines
[ "FROM scratch",
"HEALTHCHECK CMD /bin/bla"
]
in ruleCatchesNot "DL3057" dockerfile
it "ok with inheriting HEALTHCHECK instruction" $ do
let dockerfile = Text.unlines
[ "FROM scratch AS base",
"HEALTHCHECK CMD /bin/bla",
"FROM base"
]
in ruleCatchesNot "DL3057" dockerfile
it "ok with ending inheritance chain with HEALTCHECK" $ do
let dockerfile = Text.unlines
[ "FROM scratch AS base1",
"FROM base1 AS base2",
"FROM base2 AS base3",
"FROM base3 AS end",
"HEALTHCHECK NONE"
]
in ruleCatchesNot "DL3057" dockerfile
it "warn when inheritance chain bifurcates" $ do
let dockerfile = Text.unlines
[ "FROM scratch AS base1",
"FROM base1 AS base2",
"FROM base2 AS base3.1",
"FROM base2 AS base3.2", -- This will trigger DL3057
"",
"FROM base3.1 AS end1",
"HEALTHCHECK NONE",
"",
"FROM base3.2 AS end2" -- This will trigger DL3057
]
in ruleCatches "DL3057" dockerfile
it "warn when not inheriting with no HEALTHCHECK instruction" $ do
let dockerfile = Text.unlines
[ "FROM scratch AS base",
"HEALTHCHECK CMD /bin/bla",
"FROM scratch"
]
in ruleCatches "DL3057" dockerfile