packages feed

cardano-addresses-4.0.2: test/Main.hs

{-# LANGUAGE CPP #-}
module Main where

import Prelude

import Main.Utf8
    ( withUtf8 )
import Test.Hspec.Runner
    ( defaultConfig, hspecWith )

import qualified AutoDiscover

-- This is effectively from the now defunct foundation/basement from
--  https://github.com/haskell-foundation/foundation/blob/5e28e3ea1e2fe9a98c157df463bd32d3f92e7f80/basement/Basement/Terminal.hs#L14-L26
#ifdef mingw32_HOST_OS
import System.IO
    ( hSetEncoding, stderr, stdin, stdout, utf8 )
import System.Win32.Console
    ( getConsoleCP, getConsoleOutputCP, setConsoleCP, setConsoleOutputCP )
#endif

#ifdef mingw32_HOST_OS
initialize :: IO ()
initialize = do
    query getConsoleOutputCP (\e -> setConsoleOutputCP e >> hSetEncoding stdout utf8 >> hSetEncoding stderr utf8) utf8Code
    query getConsoleCP (\e -> setConsoleCP e >> hSetEncoding stdin utf8) utf8Code
  where
    utf8Code = 65001
    query get set expected = do
        v <- get
        if v == expected then pure () else set expected
#endif

main :: IO ()
main = do
#ifdef mingw32_HOST_OS
    initialize
#endif
    withUtf8 $ hspecWith defaultConfig AutoDiscover.spec