stack-2.1.1: src/test/Stack/Config/DockerSpec.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ViewPatterns #-}
module Stack.Config.DockerSpec (spec) where
import Test.Hspec
import Test.Hspec.QuickCheck
import Stack.Prelude
import Stack.Types.Resolver
import RIO.Time (fromGregorian)
import Stack.Config.Docker (parseLtsName, addDefaultTag)
spec :: Spec
spec = do
prop "parseLtsName" $ \(abs -> x) (abs -> y) -> do
case ltsSnapshotLocation x y of
RSLUrl url _ ->
case parseLtsName url of
Just (x', y') -> do
x `shouldBe` x'
y `shouldBe` y'
Nothing -> error "parseLtsName failed"
loc -> error $ show loc
describe "addDefaultTag" $ do
it "succeeds fails no resolver" $ addDefaultTag "foo/bar" Nothing Nothing `shouldBe` Nothing
it "succeeds on LTS" $
addDefaultTag
"foo/bar"
Nothing
(Just $ ARResolver $ ltsSnapshotLocation 1 2)
`shouldBe` Just "foo/bar:lts-1.2"
it "fails on nightly" $
addDefaultTag
"foo/bar"
Nothing
(Just $ ARResolver $ nightlySnapshotLocation $ fromGregorian 2018 1 1)
`shouldBe` Nothing