Files
kandev/apps/backend/internal/agentctl/server/process/manager_temp_test.go
T

73 lines
2.6 KiB
Go

package process
import (
"context"
"io"
"os"
"path/filepath"
"testing"
"github.com/kandev/kandev/internal/agentctl/server/adapter"
"github.com/kandev/kandev/internal/agentctl/server/config"
"github.com/kandev/kandev/internal/agentctl/types"
v1 "github.com/kandev/kandev/pkg/api/v1"
)
type stubAgentAdapter struct{}
func (stubAgentAdapter) PrepareEnvironment() (map[string]string, error) { return nil, nil }
func (stubAgentAdapter) PrepareCommandArgs() []string { return nil }
func (stubAgentAdapter) Connect(io.Writer, io.Reader) error { return nil }
func (stubAgentAdapter) Initialize(context.Context) error { return nil }
func (stubAgentAdapter) GetAgentInfo() *adapter.AgentInfo { return nil }
func (stubAgentAdapter) NewSession(context.Context, []types.McpServer) (string, error) {
return "", nil
}
func (stubAgentAdapter) LoadSession(context.Context, string, []types.McpServer) error {
return nil
}
func (stubAgentAdapter) Prompt(context.Context, string, []v1.MessageAttachment, uint64) error {
return nil
}
func (stubAgentAdapter) Cancel(context.Context) error { return nil }
func (stubAgentAdapter) Updates() <-chan adapter.AgentEvent { return nil }
func (stubAgentAdapter) GetSessionID() string { return "" }
func (stubAgentAdapter) GetOperationID() string { return "" }
func (stubAgentAdapter) SetPermissionHandler(adapter.PermissionHandler) {}
func (stubAgentAdapter) Close() error { return nil }
func (stubAgentAdapter) RequiresProcessKill() bool { return false }
func envValue(env []string, key string) string {
prefix := key + "="
for _, item := range env {
if len(item) > len(prefix) && item[:len(prefix)] == prefix {
return item[len(prefix):]
}
}
return ""
}
func TestManager_BuildFinalCommandInjectsIsolatedTempDir(t *testing.T) {
mgr := NewManager(&config.InstanceConfig{
WorkDir: t.TempDir(),
SessionID: "session-123",
AgentArgs: []string{"echo"},
AgentEnv: []string{"PATH=/usr/bin"},
}, newTestLogger(t))
mgr.adapter = stubAgentAdapter{}
if err := mgr.buildFinalCommand(); err != nil {
t.Fatalf("buildFinalCommand() error = %v", err)
}
want := filepath.Join(os.TempDir(), "kandev-agent", "session-123")
for _, key := range []string{"TMPDIR", "TMP", "TEMP"} {
if got := envValue(mgr.cmd.Env, key); got != want {
t.Fatalf("%s = %q, want %q", key, got, want)
}
}
if info, err := os.Stat(want); err != nil || !info.IsDir() {
t.Fatalf("expected temp dir %q to exist, stat=%v err=%v", want, info, err)
}
}