return bigDataBytes
}
+func findZstd(t testing.TB) string {
+ zstd, err := exec.LookPath("zstd")
+ if err != nil {
+ t.Skip("skipping because zstd not found")
+ }
+ return zstd
+}
+
var (
zstdBigOnce sync.Once
zstdBigBytes []byte
- zstdBigSkip bool
zstdBigErr error
)
func zstdBigData(t testing.TB) []byte {
input := bigData(t)
- zstdBigOnce.Do(func() {
- if _, err := os.Stat("/usr/bin/zstd"); err != nil {
- zstdBigSkip = true
- return
- }
+ zstd := findZstd(t)
- cmd := exec.Command("/usr/bin/zstd", "-z")
+ zstdBigOnce.Do(func() {
+ cmd := exec.Command(zstd, "-z")
cmd.Stdin = bytes.NewReader(input)
var compressed bytes.Buffer
cmd.Stdout = &compressed
zstdBigBytes = compressed.Bytes()
})
- if zstdBigSkip {
- t.Skip("skipping because /usr/bin/zstd does not exist")
- }
if zstdBigErr != nil {
t.Fatal(zstdBigErr)
}
data := bigData(t)
compressed := zstdBigData(t)
- t.Logf("/usr/bin/zstd compressed %d bytes to %d", len(data), len(compressed))
+ t.Logf("zstd compressed %d bytes to %d", len(data), len(compressed))
r := NewReader(bytes.NewReader(compressed))
got, err := io.ReadAll(r)