Switch from Scanner to Reader to avoid Scanner's maximum token size restrictions

This commit is contained in:
Tim Van Baak 2025-02-20 21:07:35 -08:00
parent eb7191631f
commit 30ead637e2
2 changed files with 18 additions and 9 deletions

View File

@ -21,9 +21,18 @@ func readPipe(
defer func() {
done <- 0
}()
scanner := bufio.NewScanner(f)
for scanner.Scan() {
data := scanner.Bytes()
var data []byte
var err error
reader := bufio.NewReader(f)
for data, err = reader.ReadBytes('\n'); err == nil; data, err = reader.ReadBytes('\n') {
send <- data
}
if err != io.EOF {
log.Printf("error: failed to read pipe: %v", err)
}
// In case the last line has no newline
if len(data) > 0 {
send <- data
}
}

View File

@ -10,7 +10,7 @@ func TestExecute(t *testing.T) {
assertLen := func(t *testing.T, items []Item, length int) {
t.Helper()
if len(items) != length {
t.Fatalf("Expected %d items, got %d", length, len(items))
t.Errorf("Expected %d items, got %d", length, len(items))
}
}
assertNil := func(t *testing.T, err error) {
@ -22,7 +22,7 @@ func TestExecute(t *testing.T) {
assertNotNil := func(t *testing.T, err error) {
t.Helper()
if err == nil {
t.Fatal("expected err")
t.Error("expected err")
}
}
execute := func(argv []string) ([]Item, error) {
@ -196,16 +196,16 @@ func TestExecute(t *testing.T) {
_, _, errItem, err := Execute("test", argv, nil, nil, "", time.Minute, nil)
assertNotNil(t, err)
if errItem.Id == "" {
t.Fatal("missing erritem id")
t.Error("missing erritem id")
}
if errItem.Source != "default" {
t.Fatalf("unexpected erritem source: expected default, got %s", errItem.Source)
t.Errorf("unexpected erritem source: expected default, got %s", errItem.Source)
}
if !strings.Contains(errItem.Body, "Hello") || !strings.Contains(errItem.Body, "World") {
t.Fatal("missing stderr from erritem")
t.Error("missing stderr from erritem")
}
if !strings.Contains(errItem.Body, "whoops") {
t.Fatal("missing stdout from erritem")
t.Error("missing stdout from erritem")
}
})
}