49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package promptkit_test
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/promptkit"
|
|
)
|
|
|
|
func TestPreparationRejectsInvalidOutputContractWithPublicError(t *testing.T) {
|
|
engine, err := promptkit.NewEngine(
|
|
promptkit.Config{},
|
|
promptkit.WithPromptFS(contractPromptFS("prompt", "profile", "message"), "."),
|
|
promptkit.WithProfiles(promptkit.Profile{
|
|
ID: "profile",
|
|
Endpoint: "http://example.test/v1",
|
|
Model: "model",
|
|
}),
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("construct engine: %v", err)
|
|
}
|
|
|
|
req := promptkit.RunRequest{
|
|
PromptID: "prompt",
|
|
Validation: &promptkit.OutputContract{
|
|
Format: promptkit.OutputFormat("binary"),
|
|
ValidationMode: promptkit.ValidationNone,
|
|
},
|
|
}
|
|
|
|
prepared, err := engine.Prepare(context.Background(), req)
|
|
if prepared != nil {
|
|
t.Fatalf("expected no partial prepared run, got %+v", prepared)
|
|
}
|
|
if !errors.Is(err, promptkit.ErrInvalidRequest) {
|
|
t.Fatalf("prepare error = %v, want ErrInvalidRequest", err)
|
|
}
|
|
|
|
preparedExecution, err := engine.PrepareExecution(context.Background(), req)
|
|
if preparedExecution != nil {
|
|
t.Fatalf("expected no partial prepared execution, got %+v", preparedExecution)
|
|
}
|
|
if !errors.Is(err, promptkit.ErrInvalidRequest) {
|
|
t.Fatalf("prepare execution error = %v, want ErrInvalidRequest", err)
|
|
}
|
|
}
|