Commit bb374fbd authored by Grzegorz Bizon's avatar Grzegorz Bizon

Extend specs for metadata, improve internal loop

parent d76b7599
...@@ -79,9 +79,11 @@ func generateZipMetadata(output io.Writer, archive *zip.Reader) error { ...@@ -79,9 +79,11 @@ func generateZipMetadata(output io.Writer, archive *zip.Reader) error {
for d := path.Dir(entry.Name); d != "." && d != "/"; d = path.Dir(d) { for d := path.Dir(entry.Name); d != "." && d != "/"; d = path.Dir(d) {
entryDir := d + "/" entryDir := d + "/"
if _, ok := zipMap[entryDir]; !ok { // If entryDir is already in the zipMap then so are all its parent directories
zipMap[entryDir] = nil if _, ok := zipMap[entryDir]; ok {
break
} }
zipMap[entryDir] = nil
} }
} }
......
...@@ -13,28 +13,29 @@ func TestMissingMetadataEntries(t *testing.T) { ...@@ -13,28 +13,29 @@ func TestMissingMetadataEntries(t *testing.T) {
archive := zip.NewWriter(&zipBuffer) archive := zip.NewWriter(&zipBuffer)
firstFile, err := archive.Create("file1") files := []string{"file1", "some/file/dir/file2", "../../test12/test",
if err != nil { "/usr/bin/test", `c:\windows\win32.exe`, `c:/windows/win.dll`, "./f/asd", "/"}
t.Fatal(err)
}
fmt.Fprint(firstFile, "test12")
secondFile, err := archive.Create("some/file/dir/file2") for _, file := range files {
if err != nil { archiveFile, err := archive.Create(file)
t.Fatal(err) if err != nil {
t.Fatal(err)
}
fmt.Fprint(archiveFile, file)
} }
fmt.Fprint(secondFile, "test125678")
archive.Close() archive.Close()
zipReader := bytes.NewReader(zipBuffer.Bytes()) zipReader := bytes.NewReader(zipBuffer.Bytes())
zipArchiveReader, _ := zip.NewReader(zipReader, int64(binary.Size(zipBuffer.Bytes()))) zipArchiveReader, _ := zip.NewReader(zipReader, int64(binary.Size(zipBuffer.Bytes())))
err = generateZipMetadata(&metaBuffer, zipArchiveReader) if err := generateZipMetadata(&metaBuffer, zipArchiveReader); err != nil {
t.Fatal("zipartifacts: generateZipMetadata failed", err)
}
paths := []string{"file1", "some/", "some/file/", "some/file/dir", "some/file/dir/file2"} paths := []string{"file1", "some/", "some/file/", "some/file/dir", "some/file/dir/file2"}
for _, path := range paths { for _, path := range paths {
if !bytes.Contains(metaBuffer.Bytes(), []byte(path)) { if !bytes.Contains(metaBuffer.Bytes(), []byte(path)) {
t.Fatalf("zipartifacts: metadata for path %s not found!", path) t.Fatal("zipartifacts: metadata for path", path, "not found")
} }
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment