hadolint-1.18.2: test/ConfigSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module ConfigSpec where
import Control.Monad (unless)
import qualified Data.ByteString.Char8 as Bytes
import qualified Data.YAML as Yaml
import Hadolint.Config
import Test.HUnit
import Test.Hspec
tests :: SpecWith ()
tests =
describe "Config" $ do
it "Parses config with only ignores" $
let configFile =
[ "ignored:",
"- DL3000",
"- SC1010"
]
expected = ConfigFile (Just ["DL3000", "SC1010"]) Nothing
in assertConfig expected (Bytes.unlines configFile)
it "Parses config with only trustedRegistries" $
let configFile =
[ "trustedRegistries:",
"- hub.docker.com",
"- my.shady.xyz"
]
expected = ConfigFile Nothing (Just ["hub.docker.com", "my.shady.xyz"])
in assertConfig expected (Bytes.unlines configFile)
it "Parses full file" $
let configFile =
[ "trustedRegistries:",
"- hub.docker.com",
"",
"ignored:",
"- DL3000"
]
expected = ConfigFile (Just ["DL3000"]) (Just ["hub.docker.com"])
in assertConfig expected (Bytes.unlines configFile)
assertConfig :: HasCallStack => ConfigFile -> Bytes.ByteString -> Assertion
assertConfig config s =
case Yaml.decode1Strict s of
Left (_, err) ->
assertFailure err
Right result ->
checkResult result
where
checkResult result =
unless (result == config) $
assertFailure ("Config \n\n" ++ show config ++ "\n\n is not \n\n" ++ show result)