nvfetcher-0.7.0.0: test/FetchRustGitDepsSpec.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedStrings #-}
module FetchRustGitDepsSpec where
import Control.Monad (join)
import Control.Monad.Trans.Reader
import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as HMap
import Data.Maybe (fromJust)
import Data.Text (Text)
import NvFetcher.FetchRustGitDeps
import NvFetcher.NixFetcher
import NvFetcher.Types
import Test.Hspec
import Utils
spec :: Spec
spec = aroundShake $
describe "fetchRustGitDeps" $
specifyChan "works" $ do
prefetched <-
runPrefetchRule $
gitFetcher
"https://gist.github.com/NickCao/6c4dbc4e15db5da107de6cdb89578375"
"8a5f37a8f80a3b05290707febf57e88661cee442"
shouldBeJust prefetched
runFetchRustGitDepsRule (fromJust prefetched) "Cargo.lock"
`shouldReturnJust` HMap.fromList
[ ("rand-0.8.3", Checksum "sha256-zHvXCdWuGy4gPDYtis7/7+mEd/IV58sSGq139G0GD84=")
]
runPrefetchRule :: NixFetcher Fresh -> ReaderT ActionQueue IO (Maybe (NixFetcher Fetched))
runPrefetchRule fetcher = fmap join $ runActionChan $ prefetch fetcher NoForceFetch
runFetchRustGitDepsRule :: NixFetcher Fetched -> FilePath -> ReaderT ActionQueue IO (Maybe (HashMap Text Checksum))
runFetchRustGitDepsRule fetcher lockPath = runActionChan $ fetchRustGitDeps fetcher lockPath