github.com/mvdan/u-root-coreutils@v0.0.0-20230122170626-c2eef2898555/pkg/uzip/uzip_test.go (about)

     1  // Copyright 2018-2021 the u-root Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package uzip
     6  
     7  import (
     8  	"bytes"
     9  	"fmt"
    10  	"io/ioutil"
    11  	"os"
    12  	"path/filepath"
    13  	"testing"
    14  )
    15  
    16  func TestFromZip(t *testing.T) {
    17  	tmpDir := t.TempDir()
    18  
    19  	f := filepath.Join(tmpDir, "test.zip")
    20  	if err := ToZip("testdata/testFolder", f, ""); err != nil {
    21  		t.Fatalf(`ToZip("testdata/testFolder", %q, "") = %q, not nil`, f, err)
    22  	}
    23  
    24  	z, err := os.ReadFile(f)
    25  	if err != nil {
    26  		t.Fatalf(`os.ReadFile(%q) = %q, not nil`, f, err)
    27  	}
    28  	if len(z) == 0 {
    29  		t.Errorf("len(z) = 0 , want > 0")
    30  	}
    31  	if len(z) < 1 {
    32  		t.Errorf(`len(z) < 1, not > 0`)
    33  	}
    34  
    35  	out := filepath.Join(tmpDir, "unziped")
    36  	if err := os.MkdirAll(out, os.ModePerm); err != nil {
    37  		t.Fatalf(`os.MkdirAll(%q, %v)  = %q, not nil`, out, os.ModePerm, err)
    38  	}
    39  
    40  	if err := FromZip(f, out); err != nil {
    41  		t.Fatalf(`FromZip(%q, %q) = %q, not nil`, f, out, err)
    42  	}
    43  
    44  	f1 := filepath.Join(out, "file1")
    45  	f2 := filepath.Join(out, "file2")
    46  	f3 := filepath.Join(out, "subFolder", "file3")
    47  	f4 := filepath.Join(out, "subFolder", "file4")
    48  
    49  	f1Expected, err := os.ReadFile("testdata/testFolder/file1")
    50  	if err != nil {
    51  		t.Fatalf(`os.ReadFile("testdata/testFolder/file1") = _, %q, not _, nil`, err)
    52  	}
    53  	f2Expected, err := os.ReadFile("testdata/testFolder/file2")
    54  	if err != nil {
    55  		t.Fatalf(`os.ReadFile("testdata/testFolder/file2") = _, %q, not _, nil`, err)
    56  	}
    57  	f3Expected, err := os.ReadFile("testdata/testFolder/subFolder/file3")
    58  	if err != nil {
    59  		t.Fatalf(`os.ReadFile("testdata/testFolder/subFolder/file3") = _, %q, not _, nil`, err)
    60  	}
    61  	f4Expected, err := os.ReadFile("testdata/testFolder/subFolder/file4")
    62  	if err != nil {
    63  		t.Fatalf(`os.ReadFile("testdata/testFolder/subFolder/file4") = _, %q, not _, nil`, err)
    64  	}
    65  
    66  	var x []byte
    67  
    68  	x, err = ioutil.ReadFile(f1)
    69  	if err != nil {
    70  		t.Errorf("ioutil.ReadFile(%q) = %q, not nil", f1, err)
    71  	}
    72  	if !bytes.Equal(x, f1Expected) {
    73  		t.Logf("\nGot:\t %v\nWant:\t %v", x[:30], f1Expected[:30])
    74  		t.Errorf("file %q and file %q are not equal", f1, "testdata/testFolder/file1")
    75  	}
    76  	x, err = ioutil.ReadFile(f2)
    77  	if err != nil {
    78  		t.Errorf("ioutil.ReadFile(%q) = %q, not nil", f2, err)
    79  	}
    80  	if !bytes.Equal(x, f2Expected) {
    81  		t.Logf("\nGot:\t %v\nWant:\t %v", x[:30], f2Expected[:30])
    82  		t.Errorf("file %q and file %q are not equal", f2, "testdata/testFolder/file2")
    83  	}
    84  
    85  	x, err = ioutil.ReadFile(f3)
    86  	if err != nil {
    87  		t.Errorf("ioutil.ReadFile(%q) = %q, not nil", f3, err)
    88  	}
    89  	if !bytes.Equal(x, f3Expected) {
    90  		t.Logf("\nGot:\t %v\nWant:\t %v", x[:30], f3Expected[:30])
    91  		t.Errorf("file %q and file %q are not equal", f3, "testdata/testFolder/file3")
    92  	}
    93  
    94  	x, err = ioutil.ReadFile(f4)
    95  	if err != nil {
    96  		t.Errorf("ioutil.ReadFile(%q) = %q, not nil", f4, err)
    97  	}
    98  	if !bytes.Equal(x, f4Expected) {
    99  		t.Logf("\nGot:\t %v\nWant:\t %v", x[:30], f4Expected[:30])
   100  		t.Errorf("file %q and file %q are not equal\n", f4, "testdata/testFolder/file4")
   101  	}
   102  }
   103  
   104  func TestFromZipNoValidFile(t *testing.T) {
   105  	f, err := ioutil.TempFile("", "testfile-")
   106  	if err != nil {
   107  		t.Errorf(`ioutil.TempFile("", "testfile-") = %q, not nil`, err)
   108  	}
   109  	defer f.Close()
   110  	if err := FromZip(f.Name(), "someDir"); err == nil {
   111  		t.Errorf(`FromZip(f.Name(), "someDir") = %q, not nil`, err)
   112  	}
   113  }
   114  
   115  func TestAppendZip(t *testing.T) {
   116  	_, err := os.Create("appendTest.zip")
   117  	if err != nil {
   118  		t.Errorf(`os.Create("appendTest.zip") = %q, not nil`, err)
   119  	}
   120  	defer os.Remove("appendTest.zip")
   121  
   122  	if err := AppendZip("testdata/testFolder", "appendTest.zip", "Test append zip"); err != nil {
   123  		t.Errorf(`AppendZip("testdata/testFolder", "appendTest.zip", "Test append zip") = %q, not nil`, err)
   124  	}
   125  }
   126  
   127  func TestAppendZipNoDir1(t *testing.T) {
   128  	if err := AppendZip("doesNotExist", "alsoNotExist", "Whythough"); err == nil {
   129  		t.Errorf(`AppendZip("doesNotExist", "alsoNotExist", "Whythough") = %q, not nil`, err)
   130  	}
   131  }
   132  
   133  func TestAppendZipNoDir2(t *testing.T) {
   134  	f, err := ioutil.TempFile("", "testfile")
   135  	if err != nil {
   136  		t.Errorf(`ioutil.TempFile("", "testfile") = _, %q, not _, nil`, err)
   137  	}
   138  	defer f.Close()
   139  	if err := AppendZip(f.Name(), f.Name(), "no comment"); err == nil {
   140  		t.Errorf(`AppendZip(f.Name(), f.Name(), "no comment") = %q, not nil`, err)
   141  	}
   142  }
   143  
   144  func TestComment(t *testing.T) {
   145  	comment, err := Comment("test.zip")
   146  	if err != nil {
   147  		t.Errorf(`Comment("test.zip") = %q, not nil`, err)
   148  	}
   149  	fmt.Println(comment)
   150  }
   151  
   152  func TestToZip(t *testing.T) {
   153  	if err := ToZip(".", "testfile.zip", "test comment"); err != nil {
   154  		t.Errorf(`ToZip(".", "testfile.zip", "test comment") = %q, not nil`, err)
   155  	}
   156  	defer os.Remove("testfile.zip")
   157  }
   158  
   159  func TestToZipInvalidDir(t *testing.T) {
   160  	f, err := ioutil.TempFile("", "testfile-")
   161  	if err != nil {
   162  		t.Errorf(`ioutil.TempFile("", "testfile-") = %q, not nil`, err)
   163  	}
   164  	defer f.Close()
   165  	if err := ToZip(f.Name(), "invalid", "no need"); err == nil {
   166  		t.Errorf(`ToZip(f.Name(), "invalid", "no need") = %q, not nil`, err)
   167  	}
   168  }