Protect captured prompt configuration files

This commit is contained in:
2026-10-04 00:56:14 +00:00
parent f8d00e2f20
commit 9b82eb7da2
6 changed files with 187 additions and 6 deletions

View File

@@ -1399,4 +1399,47 @@ func TestSubprocessProfileSources(t *testing.T) {
if code != 2 || !bytes.Equal(before, after) || f.provider.callCount() != 0 {
t.Fatalf("loaded profile not protected: %d %s", code, stderr)
}
parentDir := filepath.Join(f.dir, "profiles", "catalog")
childDir := filepath.Join(f.dir, "profiles", "nested", "child")
for _, directory := range []string{parentDir, childDir} {
if err := os.MkdirAll(directory, 0700); err != nil {
t.Fatal(err)
}
}
parent := filepath.Join(parentDir, "arbitrary-name.yaml")
child := filepath.Join(childDir, "override.yaml")
resource := filepath.Join(parentDir, "report.md")
for path, content := range map[string]string{
parent: "prompts:\n source:\n release/1~draft:\n messages:\n - role: user\n content_file: ./report.md\n output:\n format: text\n validation_mode: basic\n",
child: "prompts:\n literal/~child:\n extends: source\n",
resource: "Captured operator message.\n",
} {
if err := os.WriteFile(path, []byte(content), 0600); err != nil {
t.Fatal(err)
}
}
resourceBefore, err := os.ReadFile(resource)
if err != nil {
t.Fatal(err)
}
f.output = resource
code, _, stderr = f.run(t, true, "--reporting=false")
resourceAfter, err := os.ReadFile(resource)
if err != nil {
t.Fatal(err)
}
if code != 2 || !bytes.Equal(resourceBefore, resourceAfter) || f.provider.callCount() != 0 {
t.Fatalf("consumed message file not protected as transcript output: %d %s", code, stderr)
}
f.output = filepath.Join(f.dir, "output.json")
code, _, stderr = f.run(t, true, "--report-dir", parentDir)
resourceAfter, err = os.ReadFile(resource)
if err != nil {
t.Fatal(err)
}
if code != 2 || !bytes.Equal(resourceBefore, resourceAfter) || f.provider.callCount() != 0 {
t.Fatalf("consumed message file not protected as report output: %d %s", code, stderr)
}
}