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 }