37 lines
1.4 KiB
Go
37 lines
1.4 KiB
Go
|
|
package promptkit_test
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"errors"
|
||
|
|
"io"
|
||
|
|
"net/http"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"go.maximumdirect.net/promptkit"
|
||
|
|
)
|
||
|
|
|
||
|
|
type failingResponseReader struct{ cause error }
|
||
|
|
|
||
|
|
func (r failingResponseReader) Read([]byte) (int, error) { return 0, r.cause }
|
||
|
|
|
||
|
|
func TestSuccessfulResponseReadFailurePublicClassification(t *testing.T) {
|
||
|
|
cause := errors.New("private response read marker")
|
||
|
|
cfg := simpleConfig("message")
|
||
|
|
cfg.HTTPClient = &http.Client{Transport: roundTripFunc(func(*http.Request) (*http.Response, error) {
|
||
|
|
return &http.Response{StatusCode: 200, Header: make(http.Header), Body: io.NopCloser(io.MultiReader(strings.NewReader(`{"choices":[{"message":{"content":"ok"}}]}`), failingResponseReader{cause}))}, nil
|
||
|
|
})}
|
||
|
|
engine, err := promptkit.NewEngine(cfg)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
_, err = engine.Run(context.Background(), simpleGenerationRequest())
|
||
|
|
if !errors.Is(err, promptkit.ErrTransport) || !errors.Is(err, cause) || errors.Is(err, promptkit.ErrMalformedResponse) || strings.Contains(err.Error(), cause.Error()) {
|
||
|
|
t.Fatalf("generation error = %v", err)
|
||
|
|
}
|
||
|
|
report, err := engine.SmokeTest(context.Background(), promptkit.SmokeTestRequest{Kind: promptkit.SmokeTestTextInference, ProfileID: "profile"})
|
||
|
|
if err != nil || report == nil || !report.Completed || report.Failure != promptkit.ExecutionFailureTransport {
|
||
|
|
t.Fatalf("smoke report = %+v, %v", report, err)
|
||
|
|
}
|
||
|
|
}
|