X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/ae8532ff0e9d3d676fec5f48780a62e58aa6882d..4a42f7f208cbfead335eba9ebe615b35b1742130:/terminal_test.go?ds=inline diff --git a/terminal_test.go b/terminal_test.go index 7b68edb..7f83b57 100644 --- a/terminal_test.go +++ b/terminal_test.go @@ -47,34 +47,56 @@ func TestEventText(t *testing.T) { text string }{ { - name: "reply as it is", - event: Event{Kind: "reply", Text: "Done."}, - text: "Done.", + name: "keeps the complete reply text", + event: Event{ + Kind: "reply", + Text: "Done.", + }, + text: "Done.", }, { - name: "own user message not shown", - event: Event{Kind: "user", Text: "typed", Source: terminalSource}, - text: "", + name: "hides the current terminal user message", + event: Event{ + Kind: "user", + Text: "typed", + Source: terminalSource, + }, + text: "", }, { - name: "user message of another source marked", - event: Event{Kind: "user", Text: "from the phone", Source: "telegram"}, - text: "[telegram] from the phone", + name: "marks a user message from another source", + event: Event{ + Kind: "user", + Text: "from the phone", + Source: "telegram", + }, + text: "[telegram] from the phone", }, { - name: "start of a subagent", - event: Event{Kind: "subagent", Text: "GreenOtter"}, - text: "[GreenOtter] started", + name: "marks the start of a subagent", + event: Event{ + Kind: "subagent", + Text: "GreenOtter", + }, + text: "[GreenOtter] started", }, { - name: "report of a subagent whole", - event: Event{Kind: "work", Text: "[GreenOtter]\nThere are 3 files.\n\nFull chat: zoom(\"GreenOtter\")", Source: "GreenOtter", Status: subagentFinished}, - text: "[GreenOtter]\nThere are 3 files.\n\nFull chat: zoom(\"GreenOtter\")", + name: "keeps the complete subagent report", + event: Event{ + Kind: "work", + Text: "[GreenOtter]\nThere are 3 files.\n\nFull chat: zoom(\"GreenOtter\")", + Source: "GreenOtter", + Status: subagentFinished, + }, + text: "[GreenOtter]\nThere are 3 files.\n\nFull chat: zoom(\"GreenOtter\")", }, { - name: "long result cut", - event: Event{Kind: "echo", Text: strings.Repeat("line\n", 12)}, - text: "[result] " + strings.Repeat("line\n", 9) + "line\n[2 more lines]", + name: "clips a long tool result with its omitted count", + event: Event{ + Kind: "echo", + Text: strings.Repeat("line\n", 12), + }, + text: "[result] " + strings.Repeat("line\n", 9) + "line\n[2 more lines]", }, } @@ -96,6 +118,7 @@ func TestTerminalEventsKeepMarkdownInNonterminalOutput(t *testing.T) { Kind: "work", Text: "[BlueBird]\n" + text, }) + require.Equal(t, text+"\n[BlueBird]\n"+text+"\n", out.String()) } @@ -112,6 +135,7 @@ func TestTerminalFileOutputKeepsMarkdown(t *testing.T) { Kind: "reply", Text: text, }) + require.Zero(t, terminalColumns(out)) contents, err := os.ReadFile(out.Name()) @@ -173,6 +197,7 @@ func TestTerminalStylesOnlyRepliesAndWork(t *testing.T) { Event{Kind: "busy"}, Event{Kind: "idle"}, ) + require.Equal(t, "[working]\n\x1b[1mfirst next\x1b[0m\n\x1b[1mlast\x1b[0m\n[BlueBird]\n\x1b[1mReport\x1b[0m\n"+ "[tool] **raw tool**\n[result] **raw result**\n[error] **raw error**\n**raw notice**\n[telegram] **raw input**\n"+ "[connected to **raw agent**]\n[BlueBird] started\n[working]\n[done]\n> ", out.String()) @@ -193,6 +218,7 @@ func TestTerminalZeroWidthUsesEightyAndReadsChanges(t *testing.T) { Kind: "reply", Text: strings.Repeat("a", 81), }) + require.Equal(t, strings.Repeat("a", 80)+"\na\n> ", out.String()) require.NoError(t, unix.IoctlSetWinsize(fd, unix.TIOCSWINSZ, &unix.Winsize{Col: 40})) require.Equal(t, 40, terminalColumns(&out)) @@ -241,6 +267,7 @@ func TestTerminalPromptsAfterIdleEventsAndClearsBeforeShownEvents(t *testing.T) Text: "Idle error", }, ) + require.Equal(t, "[connected to Example]\n> "+ "\r\x1b[2KIdle notice\n> "+ "\r\x1b[2K\x1b[1mIdle report\x1b[0m\n> "+ @@ -275,6 +302,7 @@ func TestTerminalNonterminalEventsHaveNoPromptOrClearCommands(t *testing.T) { Text: "Idle again", }, ) + require.Equal(t, "[connected to Example]\nIdle notice\n[working]\nBusy notice\n**Answer**\n[done]\nIdle again\n", out.String()) }