Skip to content

Commit 88b7410

Browse files
committed
review: add test for unzip
1 parent cb84ea8 commit 88b7410

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

pkg/util/zip_test.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,63 @@ func TestZipDirectory(t *testing.T) {
116116
}
117117
})
118118
}
119+
120+
func TestUnzip(t *testing.T) {
121+
tmpZip, err := os.CreateTemp("", "test-unzip-*.zip")
122+
if err != nil {
123+
t.Fatalf("Failed to create temp zip: %v", err)
124+
}
125+
tmpZip.Close()
126+
defer os.Remove(tmpZip.Name())
127+
128+
zw, err := os.Create(tmpZip.Name())
129+
if err != nil {
130+
t.Fatalf("Failed to open zip for writing: %v", err)
131+
}
132+
zipWriter := zip.NewWriter(zw)
133+
134+
testFiles := map[string]string{
135+
"file1.txt": "content of file 1",
136+
"subdir/file2.txt": "content of file 2",
137+
}
138+
139+
if _, err := zipWriter.Create("subdir/"); err != nil {
140+
t.Fatalf("Failed to create dir entry: %v", err)
141+
}
142+
143+
for name, content := range testFiles {
144+
w, err := zipWriter.Create(name)
145+
if err != nil {
146+
t.Fatalf("Failed to create zip entry %s: %v", name, err)
147+
}
148+
if _, err := w.Write([]byte(content)); err != nil {
149+
t.Fatalf("Failed to write zip entry %s: %v", name, err)
150+
}
151+
}
152+
zipWriter.Close()
153+
zw.Close()
154+
155+
// Unzip to temp directory
156+
destDir, err := os.MkdirTemp("", "test-unzip-dest-*")
157+
if err != nil {
158+
t.Fatalf("Failed to create dest dir: %v", err)
159+
}
160+
defer os.RemoveAll(destDir)
161+
162+
if err := Unzip(tmpZip.Name(), destDir); err != nil {
163+
t.Fatalf("Unzip failed: %v", err)
164+
}
165+
166+
// Verify extracted files
167+
for name, expectedContent := range testFiles {
168+
path := filepath.Join(destDir, name)
169+
content, err := os.ReadFile(path)
170+
if err != nil {
171+
t.Errorf("Failed to read extracted file %s: %v", name, err)
172+
continue
173+
}
174+
if string(content) != expectedContent {
175+
t.Errorf("File %s: expected %q, got %q", name, expectedContent, string(content))
176+
}
177+
}
178+
}

0 commit comments

Comments
 (0)