test(swarm): wait for inbox listener before send
- commit
- 5a4e4923f2ec1c7402c0b57e7e3a11520537f157
- author
- patriceckhart · · 2026-06-17 14:38 UTC
- parent
- d5d0754
- signature
- unsigned
- refs
- tag: v0.2.36
1 file · +10 -0
M packages/agent/modes/swarm_slash_test.go +10 -0
| @@ -102,6 +102,7 @@ func TestRunSwarmNewSpawnsAgent(t *testing.T) { | |||
| 102 | 102 | func TestRunSwarmSendDeliversToAgentInbox(t *testing.T) { | |
| 103 | 103 | root := t.TempDir() | |
| 104 | 104 | recv := make(chan string, 4) | |
| 105 | + | ready := make(chan error, 1) | |
| 105 | 106 | f := swarm.New(swarm.Config{ | |
| 106 | 107 | Root: root, | |
| 107 | 108 | RepoRoot: root, | |
| @@ -112,6 +113,7 @@ func TestRunSwarmSendDeliversToAgentInbox(t *testing.T) { | |||
| 112 | 113 | // something to talk to. The runner-test stubs do the | |
| 113 | 114 | // same; this is the minimum to exercise the wire. | |
| 114 | 115 | ln, err := swarm.Listen(a.InboxPath) | |
| 116 | + | ready <- err | |
| 115 | 117 | if err != nil { | |
| 116 | 118 | return err | |
| 117 | 119 | } | |
| @@ -138,6 +140,14 @@ func TestRunSwarmSendDeliversToAgentInbox(t *testing.T) { | |||
| 138 | 140 | if err != nil { | |
| 139 | 141 | t.Fatalf("spawn: %v", err) | |
| 140 | 142 | } | |
| 143 | + | select { | |
| 144 | + | case err := <-ready: | |
| 145 | + | if err != nil { | |
| 146 | + | t.Fatalf("listen: %v", err) | |
| 147 | + | } | |
| 148 | + | case <-time.After(5 * time.Second): | |
| 149 | + | t.Fatal("timed out waiting for agent inbox listener") | |
| 150 | + | } | |
| 141 | 151 | ||
| 142 | 152 | // Run /swarm send <id> <text...>. The dispatcher would have | |
| 143 | 153 | // already strings.Fields-ed the input; mirror that here. | |
| @@ -102,6 +102,7 @@ func TestRunSwarmNewSpawnsAgent(t *testing.T) { | |||||
| 102 | func TestRunSwarmSendDeliversToAgentInbox(t *testing.T) { | 102 | func TestRunSwarmSendDeliversToAgentInbox(t *testing.T) { | ||
| 103 | root := t.TempDir() | 103 | root := t.TempDir() | ||
| 104 | recv := make(chan string, 4) | 104 | recv := make(chan string, 4) | ||
| 105 | + | ready := make(chan error, 1) | |||
| 105 | f := swarm.New(swarm.Config{ | 106 | f := swarm.New(swarm.Config{ | ||
| 106 | Root: root, | 107 | Root: root, | ||
| 107 | RepoRoot: root, | 108 | RepoRoot: root, | ||
| @@ -112,6 +113,7 @@ func TestRunSwarmSendDeliversToAgentInbox(t *testing.T) { | |||||
| 112 | // something to talk to. The runner-test stubs do the | 113 | // something to talk to. The runner-test stubs do the | ||
| 113 | // same; this is the minimum to exercise the wire. | 114 | // same; this is the minimum to exercise the wire. | ||
| 114 | ln, err := swarm.Listen(a.InboxPath) | 115 | ln, err := swarm.Listen(a.InboxPath) | ||
| 116 | + | ready <- err | |||
| 115 | if err != nil { | 117 | if err != nil { | ||
| 116 | return err | 118 | return err | ||
| 117 | } | 119 | } | ||
| @@ -138,6 +140,14 @@ func TestRunSwarmSendDeliversToAgentInbox(t *testing.T) { | |||||
| 138 | if err != nil { | 140 | if err != nil { | ||
| 139 | t.Fatalf("spawn: %v", err) | 141 | t.Fatalf("spawn: %v", err) | ||
| 140 | } | 142 | } | ||
| 143 | + | select { | |||
| 144 | + | case err := <-ready: | |||
| 145 | + | if err != nil { | |||
| 146 | + | t.Fatalf("listen: %v", err) | |||
| 147 | + | } | |||
| 148 | + | case <-time.After(5 * time.Second): | |||
| 149 | + | t.Fatal("timed out waiting for agent inbox listener") | |||
| 150 | + | } | |||
| 141 | 151 | ||||
| 142 | // Run /swarm send <id> <text...>. The dispatcher would have | 152 | // Run /swarm send <id> <text...>. The dispatcher would have | ||
| 143 | // already strings.Fields-ed the input; mirror that here. | 153 | // already strings.Fields-ed the input; mirror that here. | ||