mirror of
https://github.com/cooperspencer/gickup
synced 2026-05-04 03:30:36 +02:00
de4f262e1f
* add additional tests * fix linter
74 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|