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) } }