packages feed

hackage-api-0.1.0: test/Spec.hs

{-# LANGUAGE ExistentialQuantification #-}

module Main where

import Control.Exception
import Data.Foldable
import Distribution.Hackage.API
import Distribution.Hackage.Types
import Network.HTTP.Client.TLS
import Servant.Client

data TestCase = forall a. TestCase (ClientM a)

main :: IO ()
main = do
  manager <- newTlsManager
  let testCases =
        [ TestCase getPackages,
          TestCase $ getCabalFile (Package "Cabal" Default),
          TestCase $ getCabalFile' (Package "Cabal" Default) 0,
          TestCase $ getVersions (Package "Cabal" Default),
          TestCase $ getRevisions (Package "Cabal" Default)
        ]
  traverse_ (checkRun manager) testCases

check :: (Exception a) => Either a b -> IO ()
check (Left e) = throwIO e
check (Right _) = pure ()

checkRun manager (TestCase m) = runClient manager m >>= check