X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/d50c22617aafed0d3d87bf4596e933b343a10b60..0b97bb2cc4bc0b8f8fe27cc7aa3f9d1d89ed28c8:/terminal_test.go?ds=sidebyside diff --git a/terminal_test.go b/terminal_test.go index d86f88a..62ffb04 100644 --- a/terminal_test.go +++ b/terminal_test.go @@ -6,7 +6,6 @@ import ( "path/filepath" "strings" "testing" - "time" "github.com/stretchr/testify/require" ) @@ -59,6 +58,16 @@ func TestEventText(t *testing.T) { 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: "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: "long result cut", event: Event{Kind: "echo", Text: strings.Repeat("line\n", 12)}, @@ -72,68 +81,3 @@ func TestEventText(t *testing.T) { }) } } - -// TerminalTestClient is a terminal client of a test daemon, with a pipe as its -// input. -type TerminalTestClient struct { - input *io.PipeWriter - done chan error - out *SyncBuffer -} - -// Type writes one line to the input of the client. -func (c *TerminalTestClient) Type(line string) { - _, err := io.WriteString(c.input, line+"\n") - if err != nil { - panic(err) - } -} - -// Output returns what the client showed. -func (c *TerminalTestClient) Output() string { - return c.out.String() -} - -// WaitFor waits until the client showed text. -func (c *TerminalTestClient) WaitFor(t *testing.T, text string) { - t.Helper() - - require.Eventually(t, func() bool { - return strings.Contains(c.Output(), text) - }, 10*time.Second, time.Millisecond, "output so far: %q", c.Output()) -} - -// Close ends the input and waits for the client. -func (c *TerminalTestClient) Close() error { - err := c.input.Close() - if err != nil { - return err - } - - return <-c.done -} - -// terminalStartTestClient connects a client to the daemon at socket. -func terminalStartTestClient(t *testing.T, socket string) *TerminalTestClient { - t.Helper() - - conn, err := net.Dial("unix", socket) - require.NoError(t, err) - - reader, writer := io.Pipe() - client := &TerminalTestClient{ - input: writer, - done: make(chan error, 1), - out: &SyncBuffer{}, - } - - go func() { - client.done <- terminalSession(t.Context(), conn, reader, client.out) - }() - - t.Cleanup(func() { - _ = writer.Close() - }) - - return client -}