github.com/kubri/kubri@v0.5.1-0.20240317001612-bda2aaef967e/integrations/apt/compress_test.go (about) 1 package apt_test 2 3 import ( 4 "bytes" 5 "io" 6 "testing" 7 8 "github.com/google/go-cmp/cmp" 9 10 "github.com/kubri/kubri/integrations/apt" 11 ) 12 13 func TestCompress(t *testing.T) { 14 want := []byte("test") 15 exts := []string{".gz", ".bz2", ".xz", ".lzma", ".lz4", ".zst", ""} 16 17 for _, ext := range exts { 18 buf := &bytes.Buffer{} 19 20 w, err := apt.Compress(ext)(buf) 21 if err != nil { 22 t.Errorf("compress %s: %s", ext, err) 23 continue 24 } 25 if _, err = w.Write(want); err != nil { 26 t.Errorf("write %s: %s", ext, err) 27 continue 28 } 29 if err = w.Close(); err != nil { 30 t.Errorf("close %s: %s", ext, err) 31 continue 32 } 33 34 isCompressed := ext != "" 35 if isCompressed == bytes.Equal(want, buf.Bytes()) { 36 t.Errorf("%s: should be compressed: %t", ext, isCompressed) 37 continue 38 } 39 40 r, err := apt.Decompress(ext)(buf) 41 if err != nil { 42 t.Errorf("decompress %s: %s", ext, err) 43 continue 44 } 45 got, err := io.ReadAll(r) 46 if err != nil { 47 t.Errorf("read %s: %s", ext, err) 48 continue 49 } 50 51 if err = r.Close(); err != nil { 52 t.Errorf("close %s: %s", ext, err) 53 continue 54 } 55 56 if !bytes.Equal(want, got) { 57 t.Errorf("%s: should be decompressed", ext) 58 } 59 } 60 } 61 62 func TestCompessionExtensions(t *testing.T) { 63 tests := []struct { 64 in apt.CompressionAlgo 65 want []string 66 }{ 67 {0, []string{"", ".xz", ".gz"}}, // defaults 68 {apt.NoCompression, []string{""}}, 69 {apt.GZIP, []string{"", ".gz"}}, 70 {apt.BZIP2, []string{"", ".bz2"}}, 71 {apt.XZ, []string{"", ".xz"}}, 72 {apt.LZMA, []string{"", ".lzma"}}, 73 {apt.LZ4, []string{"", ".lz4"}}, 74 {apt.ZSTD, []string{"", ".zst"}}, 75 {apt.BZIP2 | apt.ZSTD | apt.XZ, []string{"", ".bz2", ".xz", ".zst"}}, 76 } 77 78 for _, test := range tests { 79 got := apt.CompressionExtensions(test.in) 80 if diff := cmp.Diff(test.want, got); diff != "" { 81 t.Error(diff) 82 } 83 } 84 }