Share immutable in-memory filesystems
This commit is contained in:
@@ -103,6 +103,70 @@ func TestModulePromptFSRejectsNestedSharedFileName(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestModulePromptFSRejectsDuplicateNormalizedDestinations(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
name string
|
||||
call func() error
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "module",
|
||||
call: func() error {
|
||||
_, err := ModulePromptFS("module.test", fstest.MapFS{
|
||||
"assets/prompts/first.md": {Data: []byte("first")},
|
||||
"assets/prompts/second.md": {Data: []byte("second")},
|
||||
}, []ModulePromptFile{
|
||||
{Name: "task.md", Path: "assets/prompts/first.md"},
|
||||
{Name: " task.md ", Path: "assets/prompts/second.md"},
|
||||
})
|
||||
return err
|
||||
},
|
||||
want: `duplicate module prompt destination "assets/prompts/module.test/task.md"`,
|
||||
},
|
||||
{
|
||||
name: "sharedassets",
|
||||
call: func() error {
|
||||
shared := fstest.MapFS{
|
||||
"shared/first.md": {Data: []byte("first")},
|
||||
"shared/second.md": {Data: []byte("second")},
|
||||
}
|
||||
_, err := ModulePromptFS("module.test", fstest.MapFS{}, nil,
|
||||
SharedPromptFile{Name: "task.md", FS: shared, Path: "shared/first.md"},
|
||||
SharedPromptFile{Name: " task.md ", FS: shared, Path: "shared/second.md"},
|
||||
)
|
||||
return err
|
||||
},
|
||||
want: `duplicate sharedassets prompt destination "assets/prompts/module.test/sharedassets/task.md"`,
|
||||
},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
if err := test.call(); err == nil || err.Error() != test.want {
|
||||
t.Fatalf("ModulePromptFS() error = %v, want %q", err, test.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestModulePromptFSAllowsMatchingModuleAndSharedBasenames(t *testing.T) {
|
||||
fsys, err := ModulePromptFS("module.test", fstest.MapFS{
|
||||
"assets/prompts/system.md": {Data: []byte("module")},
|
||||
}, []ModulePromptFile{{Name: "system.md", Path: "assets/prompts/system.md"}},
|
||||
SharedPromptFile{Name: "system.md", FS: fstest.MapFS{"shared/system.md": {Data: []byte("shared")}}, Path: "shared/system.md"},
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for name, want := range map[string]string{
|
||||
"assets/prompts/module.test/system.md": "module",
|
||||
"assets/prompts/module.test/sharedassets/system.md": "shared",
|
||||
} {
|
||||
data, err := fs.ReadFile(fsys, name)
|
||||
if err != nil || string(data) != want {
|
||||
t.Fatalf("ReadFile(%q) = %q, %v; want %q", name, data, err, want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestModulePromptFSRejectsInvalidModuleDir(t *testing.T) {
|
||||
_, err := ModulePromptFS(".", fstest.MapFS{}, nil)
|
||||
if err == nil || !strings.Contains(err.Error(), "module prompt directory") {
|
||||
|
||||
Reference in New Issue
Block a user