feat: define P2 host workspace command contract

This commit is contained in:
2026-08-11 00:24:31 +02:00
parent 38c8398bc1
commit ccaf8c1be0
12 changed files with 808 additions and 1 deletions
@@ -41,3 +41,37 @@ func TestReadCanonicalRegularRejectsFinalAndParentSymlinks(t *testing.T) {
t.Fatalf("final symlink error = %v, want ErrUnsafeFile", err)
}
}
func TestReadCanonicalUTF8RejectsNonUTF8AndBounds(t *testing.T) {
path := filepath.Join(t.TempDir(), "input.sql")
if err := os.WriteFile(path, []byte("\xff"), 0o600); err != nil {
t.Fatal(err)
}
if _, err := ReadCanonicalUTF8(path, 1024); !errors.Is(err, ErrUnsafeFile) {
t.Fatalf("ReadCanonicalUTF8 invalid UTF-8 = %v", err)
}
if err := os.WriteFile(path, []byte("12345"), 0o600); err != nil {
t.Fatal(err)
}
if _, err := ReadCanonicalUTF8(path, 4); !errors.Is(err, ErrUnsafeFile) {
t.Fatalf("ReadCanonicalUTF8 oversized = %v", err)
}
}
func TestWriteCanonicalExclusiveRejectsExistingAndCreatesPrivateFile(t *testing.T) {
root, err := filepath.EvalSymlinks(t.TempDir())
if err != nil {
t.Fatal(err)
}
path := filepath.Join(root, "candidate.yaml")
if err := WriteCanonicalExclusive(path, []byte("ok"), 0o600); err != nil {
t.Fatal(err)
}
contents, err := os.ReadFile(path)
if err != nil || string(contents) != "ok" {
t.Fatalf("output = %q, %v", contents, err)
}
if err := WriteCanonicalExclusive(path, []byte("replace"), 0o600); !errors.Is(err, ErrUnsafeFile) {
t.Fatalf("replacement = %v", err)
}
}