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)
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)},
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)
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)
})
}()