@@ -0,0 +1,72 @@
1+{-# LANGUAGE OverloadedStrings #-}
2+module Katip.Tests.Scribes.Handle
6+-------------------------------------------------------------------------------
9+import Data.Text (Text)
10+import qualified Data.Text.IO as T
11+import System.Directory
15+import Test.Tasty.HUnit
16+import Text.Regex.TDFA
17+-------------------------------------------------------------------------------
19+-------------------------------------------------------------------------------
23+tests = testGroup "Katip.Scribes.Handle"
25+ withResource setup teardown $ \setupScribe -> testCase "logs the correct data" $ do
26+ (path, h, le) <- setupScribe
27+ runKatipT le $ logItem dummyLogItem "test" Nothing InfoS "test message"
30+ let pat = "\\[[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2} [[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2}\\]\\[katip-test.test\\]\\[Info\\]\\[.+\\]\\[[[:digit:]]+\\]\\[ThreadId [[:digit:]]+\\]\\[note:some note\\] test message" :: String
31+ let matches = res =~ pat
36+-------------------------------------------------------------------------------
37+data DummyLogItem = DummyLogItem {
42+instance ToJSON DummyLogItem where
43+ toJSON (DummyLogItem n) = object ["note" .= n]
46+instance ToObject DummyLogItem
49+instance LogItem DummyLogItem where
50+ payloadKeys _ _ = AllKeys
53+-------------------------------------------------------------------------------
54+dummyLogItem :: DummyLogItem
55+dummyLogItem = DummyLogItem "some note"
58+-------------------------------------------------------------------------------
59+setup :: IO (FilePath, Handle, LogEnv)
61+ tempDir <- getTemporaryDirectory
62+ (fp, h) <- openTempFile tempDir "katip.log"
63+ s <- mkHandleScribe (ColorLog False) h DebugS V3
64+ le <- initLogEnv "katip-test" "test"
65+ return (fp, h, registerScribe "handle" s le)
68+-------------------------------------------------------------------------------
69+teardown :: (FilePath, Handle, LogEnv) -> IO ()
70+teardown (_, h, _) = do