Files
Arnaud Héritier 2bb1e4b264 chore: upgrade to Go 1.27.0 and apply 1.27 modernizations
- Bump go.mod and Dockerfile from go 1.26.5 to go 1.27.0
- Run go mod tidy to update checksums
- Remove obsolete // +build build tag from e2e/binary/binary_test.go
- Use slices.Backward in cmd/wasm/runtime_wasm.go reverse loop
- Use strings.CutLast (new in Go 1.27) at 6 sites:
  pkg/toolinstall/installer.go, pkg/model/provider/dmr/available.go,
  pkg/model/provider/dmr/pull.go, pkg/config/auto.go,
  pkg/modelinfo/modelinfo.go (×2)
- Bump golangci-lint from v2.12.2 to v2.13.1 (v2.12.2 panics on
  Go 1.27 AST via staticcheck v0.7.0)
2026-08-23 09:35:49 +00:00

88 lines
2.9 KiB
Go

//go:build binary_required
package binary
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
const binDir = "../../bin"
func TestHelpInAllExecMode(t *testing.T) {
t.Parallel()
t.Run("cli plugin help", func(t *testing.T) {
res, err := ExecWithContext(t.Context(), "docker", "agent", "help")
require.NoError(t, err)
require.Contains(t, res.Stdout, "docker agent run ./agent.yaml")
})
t.Run("docker-agent help", func(t *testing.T) {
res, err := ExecWithContext(t.Context(), binDir+"/docker-agent", "help")
require.NoError(t, err)
require.Contains(t, res.Stdout, "docker-agent run ./agent.yaml")
})
}
func TestExecMissingKeys(t *testing.T) {
t.Parallel()
t.Run("cli plugin exec", func(t *testing.T) {
res, err := ExecWithContext(t.Context(), "docker", "agent", "run", "--exec", "./test-agent.yaml")
require.Error(t, err)
require.Contains(t, res.Stderr, "environment variables must be set")
require.Contains(t, res.Stderr, "OPENAI_API_KEY")
})
t.Run("docker-agent exec", func(t *testing.T) {
res, err := ExecWithContext(t.Context(), binDir+"/docker-agent", "run", "--exec", "./test-agent.yaml")
require.Error(t, err)
require.Contains(t, res.Stderr, "environment variables must be set")
require.Contains(t, res.Stderr, "OPENAI_API_KEY")
})
}
func TestAutoComplete(t *testing.T) {
t.Parallel()
t.Run("cli plugin auto-complete docker-agent", func(t *testing.T) {
res, err := ExecWithContext(t.Context(), binDir+"/docker-agent", "__complete", "ser")
require.NoError(t, err)
props := lines(res.Stdout)
require.Contains(t, props[0], "serve")
})
t.Run("cli plugin auto-complete docker-agent sub commands", func(t *testing.T) {
res, err := ExecWithContext(t.Context(), binDir+"/docker-agent", "__complete", "serve", "")
require.NoError(t, err)
props := lines(res.Stdout)
require.Greater(t, len(props), 5)
require.Contains(t, props[0], "a2a")
require.Contains(t, props[0], "Start an agent as an A2A")
require.Contains(t, props[1], "acp")
require.Contains(t, props[2], "api")
require.Contains(t, props[3], "chat")
require.Contains(t, props[4], "mcp")
})
t.Run("cli plugin auto-complete docker agent", func(t *testing.T) {
res, err := ExecWithContextAndEnv(t.Context(), []string{"DOCKER_CLI_PLUGIN_ORIGINAL_CLI_COMMAND=/docker-agent"}, binDir+"/docker-agent", "__complete", "agent", "ser")
require.NoError(t, err)
props := lines(res.Stdout)
require.Contains(t, props[0], "serve")
})
t.Run("cli plugin auto-complete docker agent sub commands", func(t *testing.T) {
res, err := ExecWithContextAndEnv(t.Context(), []string{"DOCKER_CLI_PLUGIN_ORIGINAL_CLI_COMMAND=/docker-agent"}, binDir+"/docker-agent", "__complete", "agent", "serve", "")
require.NoError(t, err)
props := lines(res.Stdout)
require.Greater(t, len(props), 2)
require.Contains(t, props[0], "a2a")
require.Contains(t, props[1], "acp")
})
}
func lines(s string) []string {
return strings.Split(s, "\n")
}