ribosome-test-0.9.9.9: lib/Ribosome/Test/TmuxCommon.hs
module Ribosome.Test.TmuxCommon where
import Chiasma.Data.CodecError (CodecError)
import Chiasma.Data.RenderError (RenderError)
import Chiasma.Data.TmuxError (TmuxError)
import Chiasma.Effect.TmuxClient (NativeTmux)
import qualified Chiasma.Test.Data.TmuxTestConfig as Chiasma
import Chiasma.Test.Tmux (TestTmuxEffects, withSystemTempDir, withTestTmux)
import Polysemy.Test (UnitTest)
import Ribosome.Data.PluginName (PluginName)
import Ribosome.Host.Data.BootError (BootError (BootError))
import Ribosome.Host.Test.Run (TestStack)
import Ribosome.Test.Data.TestConfig (TmuxTestConfig (TmuxTestConfig))
import Ribosome.Test.Embed (runTestConf)
type TmuxErrors =
[
Stop CodecError,
Error CodecError,
Stop RenderError,
Error RenderError,
Stop TmuxError,
Error TmuxError,
Error Text
]
type TmuxBaseStack =
TestTmuxEffects ++ TmuxErrors
type TmuxStack =
NativeTmux : TmuxBaseStack ++ Reader PluginName : TestStack
interpretTmuxErrors ::
Member (Error BootError) r =>
InterpretersFor TmuxErrors r
interpretTmuxErrors =
mapError BootError .
mapError @TmuxError (BootError . show) .
stopToError .
mapError @RenderError (BootError . show) .
stopToError .
mapError @CodecError (BootError . show) .
stopToError
withTmuxTest ::
Members TestStack r =>
Chiasma.TmuxTestConfig ->
InterpretersFor TmuxBaseStack r
withTmuxTest conf =
interpretTmuxErrors .
withSystemTempDir .
withTestTmux conf
runTmuxNvim ::
HasCallStack =>
TmuxTestConfig ->
Sem TmuxStack () ->
UnitTest
runTmuxNvim (TmuxTestConfig conf tmuxConf) =
runTestConf conf .
withTmuxTest tmuxConf .
restop @TmuxError @NativeTmux