Skip to content

Commit 64a1827

Browse files
committed
test(acp): isolate wrapper env and cover codex dispatch
1 parent dfc5f8e commit 64a1827

File tree

1 file changed

+51
-2
lines changed

1 file changed

+51
-2
lines changed

internal/agent/acp_script_test.go

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package agent
22

33
import (
44
"bytes"
5+
"fmt"
56
"os"
67
"os/exec"
78
"path/filepath"
@@ -31,9 +32,26 @@ func runACPWrapperCommand(t *testing.T, commandPath string, env map[string]strin
3132
t.Helper()
3233

3334
cmd := exec.Command(commandPath, args...)
34-
cmd.Env = os.Environ()
35+
pathValue := os.Getenv("PATH")
36+
if customPath, ok := env["PATH"]; ok {
37+
pathValue = customPath
38+
}
39+
40+
cmd.Env = []string{
41+
"PATH=" + pathValue,
42+
}
43+
if home := os.Getenv("HOME"); home != "" {
44+
cmd.Env = append(cmd.Env, "HOME="+home)
45+
}
46+
if tmpDir := os.Getenv("TMPDIR"); tmpDir != "" {
47+
cmd.Env = append(cmd.Env, "TMPDIR="+tmpDir)
48+
}
49+
3550
for k, v := range env {
36-
cmd.Env = append(cmd.Env, k+"="+v)
51+
if k == "PATH" {
52+
continue
53+
}
54+
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", k, v))
3755
}
3856

3957
var stdout bytes.Buffer
@@ -86,6 +104,37 @@ func TestACPWrapperScripts(t *testing.T) {
86104
}
87105
})
88106

107+
t.Run("Adapter dispatch invokes codex wrapper binary from PATH", func(t *testing.T) {
108+
fakeBinDir := t.TempDir()
109+
writeACPTestCommand(t, fakeBinDir, "codex-acp", "#!/bin/sh\necho ACP_CODEX_OK\n")
110+
111+
stdout, stderr, err := runACPWrapperCommand(t, filepath.Join(scriptsDir, "acp-agent"), map[string]string{
112+
"ROBOREV_ACP_ADAPTER": "codex",
113+
"PATH": fakeBinDir + string(os.PathListSeparator) + basePath,
114+
})
115+
if err != nil {
116+
t.Fatalf("expected codex adapter dispatch to succeed, got err=%v stderr=%q", err, stderr)
117+
}
118+
if !strings.Contains(stdout, "ACP_CODEX_OK") {
119+
t.Fatalf("expected codex marker in stdout, got: %q", stdout)
120+
}
121+
})
122+
123+
t.Run("Default adapter dispatch uses codex when adapter env is unset", func(t *testing.T) {
124+
fakeBinDir := t.TempDir()
125+
writeACPTestCommand(t, fakeBinDir, "codex-acp", "#!/bin/sh\necho ACP_DEFAULT_CODEX_OK\n")
126+
127+
stdout, stderr, err := runACPWrapperCommand(t, filepath.Join(scriptsDir, "acp-agent"), map[string]string{
128+
"PATH": fakeBinDir + string(os.PathListSeparator) + basePath,
129+
})
130+
if err != nil {
131+
t.Fatalf("expected default adapter dispatch to succeed, got err=%v stderr=%q", err, stderr)
132+
}
133+
if !strings.Contains(stdout, "ACP_DEFAULT_CODEX_OK") {
134+
t.Fatalf("expected default codex marker in stdout, got: %q", stdout)
135+
}
136+
})
137+
89138
t.Run("Gemini wrapper appends --experimental-acp flag", func(t *testing.T) {
90139
fakeBinDir := t.TempDir()
91140
writeACPTestCommand(t, fakeBinDir, "gemini", "#!/bin/sh\necho GEMINI_ARGS:$@\n")

0 commit comments

Comments
 (0)