{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE NoImplicitPrelude #-} -- : out agent-log-test module Omni.Agent.LogTest where import Alpha import Omni.Agent.Log import qualified Omni.Test as Test main :: IO () main = Test.run tests tests :: Test.Tree tests = Test.group "Omni.Agent.Log" [ Test.unit "Parse LogEntry" testParse, Test.unit "Format LogEntry" testFormat ] testParse :: IO () testParse = do let json = "{\"message\": \"executing 1 tools in 1 batch(es)\", \"batches\": [[\"grep\"]]}" let expected = LogEntry { leMessage = "executing 1 tools in 1 batch(es)", leLevel = Nothing, leToolName = Nothing, leBatches = Just [["grep"]], leMethod = Nothing, lePath = Nothing } parseLine json @?= Just expected testFormat :: IO () testFormat = do let entry = LogEntry { leMessage = "executing 1 tools in 1 batch(es)", leLevel = Nothing, leToolName = Nothing, leBatches = Just [["grep"]], leMethod = Nothing, lePath = Nothing } format entry @?= Just "🤖 THOUGHT: Planning tool execution (grep)" let entry2 = LogEntry { leMessage = "some random log", leLevel = Nothing, leToolName = Nothing, leBatches = Nothing, leMethod = Nothing, lePath = Nothing } format entry2 @?= Nothing let entry3 = LogEntry { leMessage = "some error", leLevel = Just "error", leToolName = Nothing, leBatches = Nothing, leMethod = Nothing, lePath = Nothing } format entry3 @?= Just "❌ ERROR: some error" (@?=) :: (Eq a, Show a) => a -> a -> IO () (@?=) = (Test.@?=)