66 lines
2.0 KiB
Go
66 lines
2.0 KiB
Go
package promptkit_test
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"sync/atomic"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/promptkit"
|
|
)
|
|
|
|
func TestAppendedMessageRoleConstantsAreStrings(t *testing.T) {
|
|
var (
|
|
developer string = promptkit.RoleDeveloper
|
|
system string = promptkit.RoleSystem
|
|
user string = promptkit.RoleUser
|
|
assistant string = promptkit.RoleAssistant
|
|
)
|
|
if developer != "developer" || system != "system" || user != "user" || assistant != "assistant" {
|
|
t.Fatalf("unexpected role constants: %q %q %q %q", developer, system, user, assistant)
|
|
}
|
|
}
|
|
|
|
func TestInvalidAppendedMessagesFailBeforeSourceOrModelWork(t *testing.T) {
|
|
promptSource := &inspectionCountingFS{}
|
|
var modelCalls atomic.Int64
|
|
engine, err := promptkit.NewEngine(
|
|
promptkit.Config{},
|
|
promptkit.WithPromptFS(promptSource, "."),
|
|
promptkit.WithLLMClient(countingLLMClient{calls: &modelCalls}),
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("construct engine: %v", err)
|
|
}
|
|
request := promptkit.RunRequest{
|
|
PromptID: "unreached",
|
|
AppendedMessages: []promptkit.RenderedMessage{{
|
|
Role: "unsupported-role",
|
|
Content: "sensitive appended content",
|
|
}},
|
|
}
|
|
|
|
operations := []struct {
|
|
name string
|
|
run func() error
|
|
}{
|
|
{name: "Prepare", run: func() error { _, err := engine.Prepare(context.Background(), request); return err }},
|
|
{name: "PrepareExecution", run: func() error { _, err := engine.PrepareExecution(context.Background(), request); return err }},
|
|
{name: "Run", run: func() error { _, err := engine.Run(context.Background(), request); return err }},
|
|
}
|
|
for _, operation := range operations {
|
|
t.Run(operation.name, func(t *testing.T) {
|
|
err := operation.run()
|
|
if !errors.Is(err, promptkit.ErrInvalidRequest) {
|
|
t.Fatalf("error = %v, want ErrInvalidRequest", err)
|
|
}
|
|
})
|
|
}
|
|
if promptSource.opens.Load() != 0 {
|
|
t.Fatalf("invalid appended message opened prompt sources %d times", promptSource.opens.Load())
|
|
}
|
|
if modelCalls.Load() != 0 {
|
|
t.Fatalf("invalid appended message invoked the model %d times", modelCalls.Load())
|
|
}
|
|
}
|