]> git.giacomolli.uk - onechat/blobdiff - daemon_test.go
Limit the time of each Telegram send call
[onechat] / daemon_test.go
index 91d6ecc8658095f12c6be089e2b229ab7db83889..47fb9a5efa072c2bb8313486f5de68dd29f458fc 100644 (file)
@@ -116,6 +116,18 @@ func TestListenSocketRefusesALongPath(t *testing.T) {
        require.ErrorContains(t, err, "set ONECHAT_DIR to a shorter path")
 }
 
+func TestDaemonWritesNoFileForALongSocketPath(t *testing.T) {
+       dir := filepath.Join(t.TempDir(), strings.Repeat("d", 100))
+       t.Setenv("ONECHAT_DIR", dir)
+
+       err := daemon(t.Context(), io.Discard)
+       require.ErrorContains(t, err, "set ONECHAT_DIR to a shorter path")
+
+       entries, err := os.ReadDir(dir)
+       require.NoError(t, err)
+       require.Empty(t, entries)
+}
+
 func TestOneProcessHoldsTheTokens(t *testing.T) {
        dir := t.TempDir()
        lock, err := lockTokens(dir)
@@ -142,10 +154,15 @@ func TestEventText(t *testing.T) {
                        text:  "Done.",
                },
                {
-                       name:  "user message not shown",
-                       event: Event{Kind: "user", Text: "typed"},
+                       name:  "own user message not shown",
+                       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:  "long result cut",
                        event: Event{Kind: "echo", Text: strings.Repeat("line\n", 12)},
@@ -225,6 +242,13 @@ func (b *syncBuffer) String() string {
 func startTestDaemon(t *testing.T, server *fakeResponses) string {
        t.Helper()
 
+       return startTestDaemonWithBot(t, server, nil)
+}
+
+// startTestDaemonWithBot is startTestDaemon with bot, which can be nil.
+func startTestDaemonWithBot(t *testing.T, server *fakeResponses, bot *telegramBot) string {
+       t.Helper()
+
        dir := t.TempDir()
        agent, err := openAgent(filepath.Join(dir, agentDirName))
        require.NoError(t, err)
@@ -242,7 +266,7 @@ func startTestDaemon(t *testing.T, server *fakeResponses) string {
        ctx, cancel := context.WithCancel(t.Context())
        done := make(chan error)
        go func() {
-               done <- serveAgent(ctx, listener, func(notify func(Event)) (*loop, error) {
+               done <- serveAgent(ctx, listener, bot, func(notify func(Event)) (*loop, error) {
                        return newLoop(agent, memory, client, clock.Now, notify)
                })
        }()