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  }