71 lines
2.2 KiB
Go
71 lines
2.2 KiB
Go
// SPDX-License-Identifier: EUPL-1.2
|
|
|
|
package agentic
|
|
|
|
import (
|
|
"testing"
|
|
|
|
core "dappco.re/go/core"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCommandsResume_CmdResume_Good_DryRun(t *testing.T) {
|
|
s, _ := testPrepWithCore(t, nil)
|
|
|
|
workspaceDir := core.JoinPath(WorkspaceRoot(), "core", "go-io", "task-42")
|
|
require.True(t, fs.EnsureDir(core.JoinPath(workspaceDir, "repo", ".git")).OK)
|
|
require.True(t, fs.Write(core.JoinPath(workspaceDir, "status.json"), core.JSONMarshalString(WorkspaceStatus{
|
|
Status: "blocked",
|
|
Agent: "codex",
|
|
Repo: "go-io",
|
|
Task: "Fix the failing tests",
|
|
})).OK)
|
|
|
|
result := s.cmdResume(core.NewOptions(
|
|
core.Option{Key: "workspace", Value: "core/go-io/task-42"},
|
|
core.Option{Key: "answer", Value: "Use the new Core API"},
|
|
core.Option{Key: "dry_run", Value: true},
|
|
))
|
|
require.True(t, result.OK)
|
|
|
|
output, ok := result.Value.(ResumeOutput)
|
|
require.True(t, ok)
|
|
assert.Equal(t, "core/go-io/task-42", output.Workspace)
|
|
assert.Equal(t, "codex", output.Agent)
|
|
assert.Contains(t, output.Prompt, "Fix the failing tests")
|
|
assert.Contains(t, output.Prompt, "Use the new Core API")
|
|
}
|
|
|
|
func TestCommandsResume_CmdResume_Bad_MissingWorkspace(t *testing.T) {
|
|
s, _ := testPrepWithCore(t, nil)
|
|
|
|
result := s.cmdResume(core.NewOptions())
|
|
|
|
assert.False(t, result.OK)
|
|
require.Error(t, result.Value.(error))
|
|
assert.Contains(t, result.Value.(error).Error(), "workspace is required")
|
|
}
|
|
|
|
func TestCommandsResume_CmdResume_Ugly_CorruptStatus(t *testing.T) {
|
|
s, _ := testPrepWithCore(t, nil)
|
|
|
|
workspaceDir := core.JoinPath(WorkspaceRoot(), "core", "go-io", "task-42")
|
|
require.True(t, fs.EnsureDir(core.JoinPath(workspaceDir, "repo", ".git")).OK)
|
|
require.True(t, fs.Write(core.JoinPath(workspaceDir, "status.json"), "{broken json").OK)
|
|
|
|
result := s.cmdResume(core.NewOptions(core.Option{Key: "_arg", Value: "core/go-io/task-42"}))
|
|
|
|
assert.False(t, result.OK)
|
|
require.Error(t, result.Value.(error))
|
|
assert.Contains(t, result.Value.(error).Error(), "no status.json in workspace")
|
|
}
|
|
|
|
func TestCommandsResume_RegisterCommands_Good(t *testing.T) {
|
|
s, c := testPrepWithCore(t, nil)
|
|
|
|
s.registerCommands(c.Context())
|
|
|
|
assert.Contains(t, c.Commands(), "resume")
|
|
assert.Contains(t, c.Commands(), "agentic:resume")
|
|
}
|