79 lines
2.5 KiB
Go
79 lines
2.5 KiB
Go
// SPDX-License-Identifier: EUPL-1.2
|
|
|
|
package agentic
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
core "dappco.re/go/core"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPromptVersion_ReadPromptSnapshot_Good(t *testing.T) {
|
|
workspaceDir := t.TempDir()
|
|
prompt := "TASK: Fix tests\n\nRead CODEX.md and commit when done."
|
|
|
|
writeResult := writePromptSnapshot(workspaceDir, prompt)
|
|
require.True(t, writeResult.OK)
|
|
|
|
snapshot, err := readPromptSnapshot(workspaceDir)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, promptSnapshotHash(prompt), snapshot.Hash)
|
|
assert.Contains(t, snapshot.CreatedAt, "T")
|
|
assert.Equal(t, prompt, snapshot.Content)
|
|
}
|
|
|
|
func TestPromptVersion_ReadPromptSnapshot_Bad_MissingWorkspace(t *testing.T) {
|
|
_, err := readPromptSnapshot("")
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "workspace is required")
|
|
}
|
|
|
|
func TestPromptVersion_ReadPromptSnapshot_Ugly_InvalidJson(t *testing.T) {
|
|
workspaceDir := t.TempDir()
|
|
metaDir := WorkspaceMetaDir(workspaceDir)
|
|
require.True(t, fs.EnsureDir(metaDir).OK)
|
|
require.True(t, fs.Write(core.JoinPath(metaDir, "prompt-version.json"), "{not-json").OK)
|
|
|
|
_, err := readPromptSnapshot(workspaceDir)
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "failed to parse prompt snapshot")
|
|
}
|
|
|
|
func TestPromptVersion_PromptVersionTool_Good(t *testing.T) {
|
|
workspaceDir := t.TempDir()
|
|
prompt := "TASK: Fix tests\n\nRead CODEX.md and commit when done."
|
|
|
|
require.True(t, writePromptSnapshot(workspaceDir, prompt).OK)
|
|
|
|
_, output, err := (&PrepSubsystem{}).promptVersionTool(context.Background(), nil, PromptVersionInput{
|
|
Workspace: workspaceDir,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
assert.True(t, output.Success)
|
|
assert.Equal(t, workspaceDir, output.Workspace)
|
|
assert.Equal(t, promptSnapshotHash(prompt), output.Snapshot.Hash)
|
|
}
|
|
|
|
func TestPromptVersion_PromptVersionTool_Bad_MissingWorkspace(t *testing.T) {
|
|
_, _, err := (&PrepSubsystem{}).promptVersionTool(context.Background(), nil, PromptVersionInput{})
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "workspace is required")
|
|
}
|
|
|
|
func TestPromptVersion_PromptVersionTool_Ugly_InvalidJson(t *testing.T) {
|
|
workspaceDir := t.TempDir()
|
|
metaDir := WorkspaceMetaDir(workspaceDir)
|
|
require.True(t, fs.EnsureDir(metaDir).OK)
|
|
require.True(t, fs.Write(core.JoinPath(metaDir, "prompt-version.json"), "{not-json").OK)
|
|
|
|
_, _, err := (&PrepSubsystem{}).promptVersionTool(context.Background(), nil, PromptVersionInput{
|
|
Workspace: workspaceDir,
|
|
})
|
|
require.Error(t, err)
|
|
assert.Contains(t, err.Error(), "failed to parse prompt snapshot")
|
|
}
|