From a85dc635ad6a8b647c80cc2e2c9a2c6d68ea5209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Mu=C5=82a?= Date: Fri, 22 Apr 2022 10:43:33 +0200 Subject: [PATCH] zstd: add regression case for #561 --- zstd/seqdec_test.go | 30 ++++++++++++++++++++++++++++ zstd/testdata/decode-regression.zip | Bin 0 -> 7963 bytes 2 files changed, 30 insertions(+) create mode 100644 zstd/testdata/decode-regression.zip diff --git a/zstd/seqdec_test.go b/zstd/seqdec_test.go index c0d8fe9ed2..a0e7addc2c 100644 --- a/zstd/seqdec_test.go +++ b/zstd/seqdec_test.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/csv" "fmt" + "io" "io/ioutil" "os" "reflect" @@ -167,6 +168,35 @@ func readDecoders(tb testing.TB, buf *bytes.Buffer, ref testSequence) sequenceDe return s } +func Test_seqdec_decode_regression(t *testing.T) { + zr := testCreateZipReader("testdata/decode-regression.zip", t) + + for _, tt := range zr.File { + t.Run(tt.Name, func(t *testing.T) { + f, err := tt.Open() + if err != nil { + t.Error(err) + return + } + defer f.Close() + + // Note: make sure we create stream reader + dec, err := NewReader(f, WithDecoderConcurrency(4)) + if err != nil { + t.Error(err) + return + } + + var buf []byte + _, err = io.ReadFull(dec, buf) + if err != nil { + t.Error(err) + return + } + }) + } +} + func Test_seqdec_decoder(t *testing.T) { const writeWant = false var buf bytes.Buffer diff --git a/zstd/testdata/decode-regression.zip b/zstd/testdata/decode-regression.zip new file mode 100644 index 0000000000000000000000000000000000000000..9ea27c8ded3690f878c0d42350bcd5078668a78c GIT binary patch literal 7963 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 SfA;|YmCHZR{)fK-fd2z9V%ix1 literal 0 HcmV?d00001