staversion-0.1.1.0: test/NetworkTest.hs
module Main (main,spec) where
import qualified Data.ByteString.Lazy as BSL
import Network.HTTP.Client (newManager, Manager)
import Network.HTTP.Client.TLS (tlsManagerSettings)
import Test.Hspec
import Staversion.Internal.TestUtil (ver)
import Staversion.Internal.BuildPlan
( newBuildPlanManager,
loadBuildPlan,
packageVersion
)
import Staversion.Internal.BuildPlan.Stackage
( fetchDisambiguator,
fetchBuildPlanYAML,
PartialResolver(..), ExactResolver(..)
)
import Staversion.Internal.Log (defaultLogger, Logger(loggerThreshold))
import Staversion.Internal.Query (PackageSource(..))
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
spec_Stackage
spec_BuildPlan
spec_Stackage:: Spec
spec_Stackage = describe "BuildPlan.Stackage" $ beforeAll makeManager $ do
describe "fetchDisambiguator" $ do
it "fetches valid disambiguator" $ \man -> do
e_dis <- fetchDisambiguator man
case e_dis of
Left err -> expectationFailure ("should not be Left: " ++ err)
Right dis -> dis (PartialLTSMajor 2) `shouldBe` Just (ExactLTS 2 22)
describe "fetchBuildPlanYAML" $ do
it "fetches a LTS build plan" $ \man -> do
raw_yaml <- fetchBuildPlanYAML man (ExactLTS 2 22)
BSL.length raw_yaml `shouldSatisfy` (> 0)
it "fetchces a nightly build plan" $ \man -> do
raw_yaml <- fetchBuildPlanYAML man (ExactNightly 2016 10 20)
BSL.length raw_yaml `shouldSatisfy` (> 0)
makeManager :: IO Manager
makeManager = newManager tlsManagerSettings
spec_BuildPlan :: Spec
spec_BuildPlan = describe "BuildPlan" $ do
describe "loadBuildPlan from Stackage" $ do
it "disambiguates LTS version and fetches a valid BuildPlan" $ do
let logger = defaultLogger { loggerThreshold = Nothing }
bp_man <- newBuildPlanManager "." logger True
bp <- loadBuildPlan bp_man (SourceStackage "lts-5") >>= \ret -> case ret of
Right bp -> return bp
Left error_msg -> error ("loadBuildPlan failed: " ++ error_msg)
packageVersion bp "base" `shouldBe` Just (ver [4,8,2,0])
packageVersion bp "bytestring" `shouldBe` Just (ver [0,10,6,0])
packageVersion bp "conduit" `shouldBe` Just (ver [1,2,6,6])