1
1
mirror of https://github.com/cooperspencer/gickup synced 2026-05-03 15:10:36 +02:00
Files
Andreas Wachter de4f262e1f add additional tests (#374)
* add additional tests

* fix linter
2026-04-08 16:32:34 +02:00

74 lines
1.8 KiB
Go

package zip
import (
archivezip "archive/zip"
"io"
"os"
"path/filepath"
"testing"
)
func TestZipCreatesArchiveAndRemovesSources(t *testing.T) {
t.Parallel()
root := t.TempDir()
repoDir := filepath.Join(root, "repo")
issuesDir := filepath.Join(root, "repo.issues")
if err := os.MkdirAll(repoDir, 0o755); err != nil {
t.Fatalf("mkdir repo: %v", err)
}
if err := os.MkdirAll(issuesDir, 0o755); err != nil {
t.Fatalf("mkdir issues: %v", err)
}
if err := os.WriteFile(filepath.Join(repoDir, "README.md"), []byte("repo data"), 0o644); err != nil {
t.Fatalf("write repo file: %v", err)
}
if err := os.WriteFile(filepath.Join(issuesDir, "1.json"), []byte(`{"id":1}`), 0o644); err != nil {
t.Fatalf("write issue file: %v", err)
}
if err := Zip(repoDir, []string{repoDir, issuesDir}); err != nil {
t.Fatalf("Zip() error = %v", err)
}
if _, err := os.Stat(repoDir); !os.IsNotExist(err) {
t.Fatalf("expected repo dir removal, got err=%v", err)
}
if _, err := os.Stat(issuesDir); !os.IsNotExist(err) {
t.Fatalf("expected issues dir removal, got err=%v", err)
}
archivePath := repoDir + ".zip"
reader, err := archivezip.OpenReader(archivePath)
if err != nil {
t.Fatalf("open zip: %v", err)
}
defer reader.Close()
entries := map[string]string{}
for _, file := range reader.File {
opened, err := file.Open()
if err != nil {
t.Fatalf("open entry %s: %v", file.Name, err)
}
data, err := io.ReadAll(opened)
opened.Close()
if err != nil {
t.Fatalf("read entry %s: %v", file.Name, err)
}
entries[file.Name] = string(data)
}
if entries["repo/README.md"] != "repo data" {
t.Fatalf("unexpected repo entry contents: %#v", entries)
}
if entries["repo.issues/1.json"] != `{"id":1}` {
t.Fatalf("unexpected issue entry contents: %#v", entries)
}
}