arch-web-0.3.2: test/Main.hs
module Main (main) where
import Control.Exception (SomeException, catch)
import Network.HTTP.Client (Manager)
import Network.HTTP.Client.TLS (newTlsManager)
import Test.HUnit
import Web.ArchLinux
main :: IO ()
main = do
manager <- newTlsManager
runTestTTAndExit $ tests manager
tests :: Manager -> Test
tests manager =
TestList
[ createTest "getPackageDetails" manager $ getPackageDetails Core X86_64 "linux",
createTest "getPackageFiles" manager $ getPackageFiles Core X86_64 "linux",
createTest "searchPackage" manager $ searchPackage emptySearchOptions {_nameOrDescription = Just "linux"},
createTest "searchAur" manager $ searchAur ByNameOrDesc "haskell",
createTest "getAurInfo" manager $ getAurInfo ["arch-hs-git"]
]
createTest :: (HasBaseUrl k) => String -> Manager -> APIClient k a -> Test
createTest tag manager action = TestLabel tag . TestCase $ do
-- Retry up to 3 times in case of network errors or rate limiting
result <- retry 3 $ runAPIClient manager action
case result of
Right _ -> pure ()
Left err -> assertFailure $ show err
retry :: Int -> IO a -> IO a
retry 0 action = action
retry n action = action `catch` \(_ :: SomeException) -> retry (n - 1) action