Coverage: agentic 40.1% → 54.3%, setup 71.5% → 75.8% Total: 695 passing tests across all packages (was ~357) New test files (15): - commands_forge_test.go — parseForgeArgs, fmtIndex - commands_workspace_test.go — extractField (9 cases) - commands_test.go — command registration + Core integration - handlers_test.go — RegisterHandlers, IPC pipeline, lifecycle - plan_crud_test.go — full CRUD via MCP handlers (23 tests) - prep_extra_test.go — buildPrompt, findConsumersList, pullWikiContent, getIssueBody - queue_extra_test.go — ConcurrencyLimit YAML, delayForAgent, drainOne - remote_client_test.go — mcpInitialize, mcpCall, readSSEData, setHeaders - remote_test.go — resolveHost, remoteToken - resume_test.go — resume dry run, agent override, validation - review_queue_test.go — countFindings, parseRetryAfter, buildAutoPRBody - review_queue_extra_test.go — buildReviewCommand, rateLimitState, reviewQueue - verify_extra_test.go — attemptVerifyAndMerge, autoVerifyAndMerge pipeline - watch_test.go — findActiveWorkspaces, resolveWorkspaceDir - setup/setup_extra_test.go — defaultBuildCommand, defaultTestCommand all branches Co-Authored-By: Virgil <virgil@lethean.io>
60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
// SPDX-License-Identifier: EUPL-1.2
|
|
|
|
package agentic
|
|
|
|
import (
|
|
"testing"
|
|
|
|
core "dappco.re/go/core"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// --- parseForgeArgs ---
|
|
|
|
func TestParseForgeArgs_Good_AllFields(t *testing.T) {
|
|
opts := core.NewOptions(
|
|
core.Option{Key: "org", Value: "myorg"},
|
|
core.Option{Key: "_arg", Value: "myrepo"},
|
|
core.Option{Key: "number", Value: "42"},
|
|
)
|
|
org, repo, num := parseForgeArgs(opts)
|
|
assert.Equal(t, "myorg", org)
|
|
assert.Equal(t, "myrepo", repo)
|
|
assert.Equal(t, int64(42), num)
|
|
}
|
|
|
|
func TestParseForgeArgs_Good_DefaultOrg(t *testing.T) {
|
|
opts := core.NewOptions(
|
|
core.Option{Key: "_arg", Value: "go-io"},
|
|
)
|
|
org, repo, num := parseForgeArgs(opts)
|
|
assert.Equal(t, "core", org, "should default to 'core'")
|
|
assert.Equal(t, "go-io", repo)
|
|
assert.Equal(t, int64(0), num, "no number provided")
|
|
}
|
|
|
|
func TestParseForgeArgs_Bad_EmptyOpts(t *testing.T) {
|
|
opts := core.NewOptions()
|
|
org, repo, num := parseForgeArgs(opts)
|
|
assert.Equal(t, "core", org, "should default to 'core'")
|
|
assert.Empty(t, repo)
|
|
assert.Equal(t, int64(0), num)
|
|
}
|
|
|
|
func TestParseForgeArgs_Bad_InvalidNumber(t *testing.T) {
|
|
opts := core.NewOptions(
|
|
core.Option{Key: "_arg", Value: "repo"},
|
|
core.Option{Key: "number", Value: "not-a-number"},
|
|
)
|
|
_, _, num := parseForgeArgs(opts)
|
|
assert.Equal(t, int64(0), num, "invalid number should parse as 0")
|
|
}
|
|
|
|
// --- fmtIndex ---
|
|
|
|
func TestFmtIndex_Good(t *testing.T) {
|
|
assert.Equal(t, "1", fmtIndex(1))
|
|
assert.Equal(t, "42", fmtIndex(42))
|
|
assert.Equal(t, "0", fmtIndex(0))
|
|
assert.Equal(t, "999999", fmtIndex(999999))
|
|
}
|