]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/internal/zstd/zstd_test.go
internal/zstd: use dynamic path resolution for zstd in tests
[gostls13.git] / src / internal / zstd / zstd_test.go
index 70141b02d055ace8ca53e6152bd40eb5f9bbdd43..4ae6f2b3982c1cc3ed88d393255b9b5b1c762393 100644 (file)
@@ -167,10 +167,17 @@ func bigData(t testing.TB) []byte {
        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
 )
 
@@ -180,13 +187,10 @@ var (
 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
@@ -198,9 +202,6 @@ func zstdBigData(t testing.TB) []byte {
 
                zstdBigBytes = compressed.Bytes()
        })
-       if zstdBigSkip {
-               t.Skip("skipping because /usr/bin/zstd does not exist")
-       }
        if zstdBigErr != nil {
                t.Fatal(zstdBigErr)
        }
@@ -217,7 +218,7 @@ func TestLarge(t *testing.T) {
        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)