hix-0.7.0: lib/Hix/Managed/Handlers/Report/Test.hs
module Hix.Managed.Handlers.Report.Test where
import Data.IORef (IORef, modifyIORef, newIORef)
import Hix.Data.Monad (M)
import Hix.Managed.Data.Mutation (FailedMutation)
import qualified Hix.Managed.Data.ProjectResult
import Hix.Managed.Data.ProjectResult (ProjectResult)
import qualified Hix.Managed.EnvResult as EnvResult
import Hix.Managed.Handlers.Report (ReportHandlers (..), handlersNull)
reportMutationsIORef ::
IORef [FailedMutation] ->
ProjectResult ->
M ()
reportMutationsIORef out results =
liftIO $ modifyIORef out \ old ->
foldl' (flip (++)) old failed
where
failed = EnvResult.failures <$> toList results.envs
handlersUnitTest ::
MonadIO m =>
m (ReportHandlers, IORef [FailedMutation])
handlersUnitTest = do
mutationsRef <- liftIO (newIORef [])
pure (handlersNull {mutations = reportMutationsIORef mutationsRef}, mutationsRef)