corago/codex-keep/intent_test.go

109 lines
3.2 KiB
Go
Raw Normal View History

package main
import (
"math"
"os"
"path/filepath"
"strings"
"testing"
)
func TestIntentProvenance(t *testing.T) {
for _, status := range []goalStatus{active, paused, "complete", "budgetLimited", "usageLimited", blocked} {
got, ok, err := parseIntent(intentLine(status))
if err != nil || !ok || got != status {
t.Fatalf("status=%s got=%s match=%v error=%v", status, got, ok, err)
}
}
line := string(intentLine(active))
for _, text := range []string{
strings.Replace(line, "user.goal", "user.input", 1),
strings.Replace(line, "\"role\":\"user\"", "\"role\":\"assistant\"", 1),
strings.Replace(line, "input_text", "output_text", 1),
} {
if _, ok, err := parseIntent([]byte(text)); err != nil || ok {
t.Fatalf("accepted untrusted instruction: match=%v error=%v", ok, err)
}
}
}
func TestIntentTail(t *testing.T) {
path := filepath.Join(t.TempDir(), "rollout.jsonl")
if err := os.WriteFile(path, intentLine(active), 0600); err != nil {
t.Fatal(err)
}
log, err := openIntent(path)
if err != nil {
t.Fatal(err)
}
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
t.Fatal("replayed historical authorization")
}
data := intentLine(paused)
appendIntent(t, path, data[:len(data)/2])
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
t.Fatal("accepted partial record")
}
appendIntent(t, path, data[len(data)/2:])
if status, err := log.read(math.MaxInt64); err != nil || status != paused {
t.Fatalf("partial completion: %s %v", status, err)
}
appendIntent(t, path, intentLine(active))
if err := log.seal(); err != nil {
t.Fatal(err)
}
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
t.Fatal("replayed pre-cancellation authorization")
}
appendIntent(t, path, intentLine(active))
if status, err := log.read(math.MaxInt64); err != nil || status != active {
t.Fatalf("new authorization: %s %v", status, err)
}
}
func TestIntentFence(t *testing.T) {
path := filepath.Join(t.TempDir(), "rollout.jsonl")
if err := os.WriteFile(path, nil, 0600); err != nil {
t.Fatal(err)
}
log, err := openIntent(path)
if err != nil {
t.Fatal(err)
}
data := intentLine(active)
appendIntent(t, path, data[:len(data)/2])
if err := log.seal(); err != nil {
t.Fatal(err)
}
appendIntent(t, path, data[len(data)/2:])
if status, err := log.read(math.MaxInt64); err != nil || status != "" {
t.Fatalf("replayed instruction spanning cancellation: %s %v", status, err)
}
appendIntent(t, path, intentLine(active))
if status, err := log.read(math.MaxInt64); err != nil || status != active {
t.Fatalf("new instruction after cancellation: %s %v", status, err)
}
}
func TestIntentCut(t *testing.T) {
path := filepath.Join(t.TempDir(), "rollout.jsonl")
if err := os.WriteFile(path, nil, 0600); err != nil {
t.Fatal(err)
}
log, err := openIntent(path)
if err != nil {
t.Fatal(err)
}
appendIntent(t, path, intentLine(paused))
end, err := log.end()
if err != nil {
t.Fatal(err)
}
appendIntent(t, path, intentLine(active))
if status, err := log.read(end); err != nil || status != paused {
t.Fatalf("read beyond captured input: %s %v", status, err)
}
if status, err := log.read(math.MaxInt64); err != nil || status != active {
t.Fatalf("lost later input: %s %v", status, err)
}
}