detached fe0a818

test(agent): strengthen watcher and profile assertions

commit
fe0a8185d2f4ebb4395bc78dae4185980bfb787a
author
brice · · 2026-08-24 16:42 UTC
parent
8258794
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
2 files · +10 -4
M packages/agent/build_orchestrator_test.go +2 -2
@@ -44,8 +44,8 @@ func TestResolveSeparatesInteractiveProactiveAndHeadlessStrictPolicies(t *testin
4444 if err != nil {
4545 t.Fatalf("resolve interactive: %v", err)
4646 }
47- if !strings.Contains(interactive.SystemPrompt, ProactiveSubagentsSystemAddendum) || strings.Contains(interactive.SystemPrompt, StrictOrchestratorSystemAddendum) || !strings.Contains(interactive.SystemPrompt, "[subagents_list]") {
48- t.Fatalf("interactive prompt did not select proactive primary policy and profiles:\n%s", interactive.SystemPrompt)
47+ if !strings.Contains(interactive.SystemPrompt, ProactiveSubagentsSystemAddendum) || strings.Contains(interactive.SystemPrompt, StrictOrchestratorSystemAddendum) || !strings.Contains(interactive.SystemPrompt, "[subagents_list]") || !strings.Contains(interactive.SystemPrompt, "- reviewer: Review delegated work") {
48+ t.Fatalf("interactive prompt did not select proactive primary policy and reviewer profile:\n%s", interactive.SystemPrompt)
4949 }
5050
5151 childArgs := residentChildArgs(base, "ollama", subagents.ResidentChildSpec{Provider: "ollama", Model: "any-local-model"})
@@ -44,8 +44,8 @@ func TestResolveSeparatesInteractiveProactiveAndHeadlessStrictPolicies(t *testin
44 if err != nil {44 if err != nil {
45 t.Fatalf("resolve interactive: %v", err)45 t.Fatalf("resolve interactive: %v", err)
46 }46 }
47- if !strings.Contains(interactive.SystemPrompt, ProactiveSubagentsSystemAddendum) || strings.Contains(interactive.SystemPrompt, StrictOrchestratorSystemAddendum) || !strings.Contains(interactive.SystemPrompt, "[subagents_list]") {47+ if !strings.Contains(interactive.SystemPrompt, ProactiveSubagentsSystemAddendum) || strings.Contains(interactive.SystemPrompt, StrictOrchestratorSystemAddendum) || !strings.Contains(interactive.SystemPrompt, "[subagents_list]") || !strings.Contains(interactive.SystemPrompt, "- reviewer: Review delegated work") {
48- t.Fatalf("interactive prompt did not select proactive primary policy and profiles:\n%s", interactive.SystemPrompt)48+ t.Fatalf("interactive prompt did not select proactive primary policy and reviewer profile:\n%s", interactive.SystemPrompt)
49 }49 }
50 50
51 childArgs := residentChildArgs(base, "ollama", subagents.ResidentChildSpec{Provider: "ollama", Model: "any-local-model"})51 childArgs := residentChildArgs(base, "ollama", subagents.ResidentChildSpec{Provider: "ollama", Model: "any-local-model"})
M packages/agent/modes/theme_watch_test.go +8 -2
@@ -24,10 +24,16 @@ func writeWatchedTheme(t *testing.T, home, body string) string {
2424
2525 func advanceThemeWatch(t *testing.T, ticks chan<- time.Time, processed <-chan struct{}, now time.Time) {
2626 t.Helper()
27- ticks <- now
27+ deadline := time.NewTimer(time.Second)
28+ defer deadline.Stop()
29+ select {
30+ case ticks <- now:
31+ case <-deadline.C:
32+ t.Fatal("watcher did not accept tick")
33+ }
2834 select {
2935 case <-processed:
30- case <-time.After(time.Second):
36+ case <-deadline.C:
3137 t.Fatal("watcher did not process tick")
3238 }
3339 }
@@ -24,10 +24,16 @@ func writeWatchedTheme(t *testing.T, home, body string) string {
24 24
25 func advanceThemeWatch(t *testing.T, ticks chan<- time.Time, processed <-chan struct{}, now time.Time) {25 func advanceThemeWatch(t *testing.T, ticks chan<- time.Time, processed <-chan struct{}, now time.Time) {
26 t.Helper()26 t.Helper()
27- ticks <- now27+ deadline := time.NewTimer(time.Second)
28+ defer deadline.Stop()
29+ select {
30+ case ticks <- now:
31+ case <-deadline.C:
32+ t.Fatal("watcher did not accept tick")
33+ }
28 select {34 select {
29 case <-processed:35 case <-processed:
30- case <-time.After(time.Second):36+ case <-deadline.C:
31 t.Fatal("watcher did not process tick")37 t.Fatal("watcher did not process tick")
32 }38 }
33 }39 }

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 476

↑↓ moveenter openesc close