module Test.Syd.Output
  ( -- * Main dispatch function
    printOutputSpecForest,

    -- * Re-exports
    module Test.Syd.Output.Common,
    module Test.Syd.Output.Pretty,
    module Test.Syd.Output.Terse,
  )
where

import qualified Data.Text.Lazy.Builder as LTB
import qualified Data.Text.Lazy.IO as LTIO
import Test.Syd.OptParse
import Test.Syd.Output.Common
import Test.Syd.Output.Pretty
import Test.Syd.Output.Terse
import Test.Syd.Run (Timed)
import Test.Syd.SpecDef

printOutputSpecForest :: Settings -> Timed ResultForest -> IO ()
printOutputSpecForest :: Settings -> Timed ResultForest -> IO ()
printOutputSpecForest Settings
settings Timed ResultForest
results =
  Text -> IO ()
LTIO.putStr (Text -> IO ()) -> Text -> IO ()
forall a b. (a -> b) -> a -> b
$
    Builder -> Text
LTB.toLazyText (Builder -> Text) -> Builder -> Text
forall a b. (a -> b) -> a -> b
$
      let renderer :: Settings -> Timed ResultForest -> Builder
renderer =
            case Settings -> OutputFormat
settingOutputFormat Settings
settings of
              OutputFormat
OutputFormatTerse -> Settings -> Timed ResultForest -> Builder
renderTerseSummary
              OutputFormat
OutputFormatPretty -> Settings -> Timed ResultForest -> Builder
renderPrettyReport
       in Settings -> Timed ResultForest -> Builder
renderer Settings
settings Timed ResultForest
results