move error_accumulator into internal pkg (#304) (#335)

* move error_accumulator into internal pkg (#304)

* move error_accumulator into internal pkg (#304)

* add a test for ErrTooManyEmptyStreamMessages in stream_reader (#304)
This commit is contained in:
渡邉祐一 / Yuichi Watanabe
2023-06-05 23:35:46 +09:00
committed by GitHub
parent fa694c61c2
commit 1394329e44
12 changed files with 249 additions and 201 deletions

53
stream_reader_test.go Normal file
View File

@@ -0,0 +1,53 @@
package openai //nolint:testpackage // testing private field
import (
"bufio"
"bytes"
"errors"
"testing"
utils "github.com/sashabaranov/go-openai/internal"
)
var errTestUnmarshalerFailed = errors.New("test unmarshaler failed")
type failingUnMarshaller struct{}
func (*failingUnMarshaller) Unmarshal(_ []byte, _ any) error {
return errTestUnmarshalerFailed
}
func TestStreamReaderReturnsUnmarshalerErrors(t *testing.T) {
stream := &streamReader[ChatCompletionStreamResponse]{
errAccumulator: utils.NewErrorAccumulator(),
unmarshaler: &failingUnMarshaller{},
}
respErr := stream.unmarshalError()
if respErr != nil {
t.Fatalf("Did not return nil with empty buffer: %v", respErr)
}
err := stream.errAccumulator.Write([]byte("{"))
if err != nil {
t.Fatalf("%+v", err)
}
respErr = stream.unmarshalError()
if respErr != nil {
t.Fatalf("Did not return nil when unmarshaler failed: %v", respErr)
}
}
func TestStreamReaderReturnsErrTooManyEmptyStreamMessages(t *testing.T) {
stream := &streamReader[ChatCompletionStreamResponse]{
emptyMessagesLimit: 3,
reader: bufio.NewReader(bytes.NewReader([]byte("\n\n\n\n"))),
errAccumulator: utils.NewErrorAccumulator(),
unmarshaler: &utils.JSONUnmarshaler{},
}
_, err := stream.Recv()
if !errors.Is(err, ErrTooManyEmptyStreamMessages) {
t.Fatalf("Did not return error when recv failed: %v", err)
}
}