mirror of
https://github.com/docker/docker-agent.git
synced 2026-11-04 18:30:09 +00:00
- 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)
88 lines
2.9 KiB
Go
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")
|
|
}
|