Skip to content

Commit fd4ed49

Browse files
committed
test(loader): cover 8192-byte EOF boundary for LoadValues
Also drop the extra blank line before the test. Addresses review on #32525. Signed-off-by: Dean Chen <[email protected]>
1 parent 601445e commit fd4ed49

2 files changed

Lines changed: 42 additions & 32 deletions

File tree

internal/chart/v3/loader/load_test.go

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"bytes"
2222
"compress/gzip"
2323
"errors"
24+
"fmt"
2425
"io"
2526
"log"
2627
"os"
@@ -419,27 +420,31 @@ foo:
419420
}
420421
}
421422

422-
423423
func TestLoadValuesEOFBoundary(t *testing.T) {
424424
// Reproduces #32506: a single logical line whose length is a multiple of
425425
// bufio's default buffer (4096) and has no trailing newline used to be
426426
// dropped entirely by YAMLReader, yielding empty values.
427-
prefix := []byte(`{"foo":"`)
428-
suffix := []byte(`"}`)
429-
pad := 4096 - len(prefix) - len(suffix)
430-
data := make([]byte, 0, 4096)
431-
data = append(data, prefix...)
432-
data = append(data, bytes.Repeat([]byte("x"), pad)...)
433-
data = append(data, suffix...)
434-
if len(data) != 4096 {
435-
t.Fatalf("test setup: want data length 4096, got %d", len(data))
436-
}
427+
// Also cover 8192 (2x buffer) so we do not only hit the single-buffer case.
428+
for _, size := range []int{4096, 8192} {
429+
t.Run(fmt.Sprintf("size_%d", size), func(t *testing.T) {
430+
prefix := []byte(`{"foo":"`)
431+
suffix := []byte(`"}`)
432+
pad := size - len(prefix) - len(suffix)
433+
data := make([]byte, 0, size)
434+
data = append(data, prefix...)
435+
data = append(data, bytes.Repeat([]byte("x"), pad)...)
436+
data = append(data, suffix...)
437+
if len(data) != size {
438+
t.Fatalf("test setup: want data length %d, got %d", size, len(data))
439+
}
437440

438-
values, err := LoadValues(bytes.NewReader(data))
439-
require.NoError(t, err)
440-
assert.Equal(t, map[string]any{
441-
"foo": string(bytes.Repeat([]byte("x"), pad)),
442-
}, values)
441+
values, err := LoadValues(bytes.NewReader(data))
442+
require.NoError(t, err)
443+
assert.Equal(t, map[string]any{
444+
"foo": string(bytes.Repeat([]byte("x"), pad)),
445+
}, values)
446+
})
447+
}
443448
}
444449

445450
func TestMergeValuesV3(t *testing.T) {

pkg/chart/v2/loader/load_test.go

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"bytes"
2222
"compress/gzip"
2323
"errors"
24+
"fmt"
2425
"io"
2526
"log"
2627
"os"
@@ -463,27 +464,31 @@ foo:
463464
}
464465
}
465466

466-
467467
func TestLoadValuesEOFBoundary(t *testing.T) {
468468
// Reproduces #32506: a single logical line whose length is a multiple of
469469
// bufio's default buffer (4096) and has no trailing newline used to be
470470
// dropped entirely by YAMLReader, yielding empty values.
471-
prefix := []byte(`{"foo":"`)
472-
suffix := []byte(`"}`)
473-
pad := 4096 - len(prefix) - len(suffix)
474-
data := make([]byte, 0, 4096)
475-
data = append(data, prefix...)
476-
data = append(data, bytes.Repeat([]byte("x"), pad)...)
477-
data = append(data, suffix...)
478-
if len(data) != 4096 {
479-
t.Fatalf("test setup: want data length 4096, got %d", len(data))
480-
}
471+
// Also cover 8192 (2x buffer) so we do not only hit the single-buffer case.
472+
for _, size := range []int{4096, 8192} {
473+
t.Run(fmt.Sprintf("size_%d", size), func(t *testing.T) {
474+
prefix := []byte(`{"foo":"`)
475+
suffix := []byte(`"}`)
476+
pad := size - len(prefix) - len(suffix)
477+
data := make([]byte, 0, size)
478+
data = append(data, prefix...)
479+
data = append(data, bytes.Repeat([]byte("x"), pad)...)
480+
data = append(data, suffix...)
481+
if len(data) != size {
482+
t.Fatalf("test setup: want data length %d, got %d", size, len(data))
483+
}
481484

482-
values, err := LoadValues(bytes.NewReader(data))
483-
require.NoError(t, err)
484-
assert.Equal(t, map[string]any{
485-
"foo": string(bytes.Repeat([]byte("x"), pad)),
486-
}, values)
485+
values, err := LoadValues(bytes.NewReader(data))
486+
require.NoError(t, err)
487+
assert.Equal(t, map[string]any{
488+
"foo": string(bytes.Repeat([]byte("x"), pad)),
489+
}, values)
490+
})
491+
}
487492
}
488493

489494
func TestMergeValuesV2(t *testing.T) {

0 commit comments

Comments
 (0)