@@ -2,6 +2,7 @@ package agent
22
33import (
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\n echo 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\n echo 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\n echo GEMINI_ARGS:$@\n " )
0 commit comments