Loading cmd/merge_zips/merge_zips.go +6 −4 Original line number Diff line number Diff line Loading @@ -342,7 +342,8 @@ func (oz *OutputZip) writeEntries(entries []string) error { func (oz *OutputZip) getUninitializedPythonPackages(inputZips []InputZip) ([]string, error) { // the runfiles packages needs to be populated with "__init__.py". // the runfiles dirs have been treated as packages. allPackages := make(map[string]bool) var allPackages []string // Using a slice to preserve input order. seenPkgs := make(map[string]bool) initedPackages := make(map[string]bool) getPackage := func(path string) string { ret := filepath.Dir(path) Loading @@ -369,16 +370,17 @@ func (oz *OutputZip) getUninitializedPythonPackages(inputZips []InputZip) ([]str initedPackages[pyPkg] = true } for pyPkg != "" { if _, found := allPackages[pyPkg]; found { if _, found := seenPkgs[pyPkg]; found { break } allPackages[pyPkg] = true seenPkgs[pyPkg] = true allPackages = append(allPackages, pyPkg) pyPkg = getPackage(pyPkg) } } } noInitPackages := make([]string, 0) for pyPkg := range allPackages { for _, pyPkg := range allPackages { if _, found := initedPackages[pyPkg]; !found { noInitPackages = append(noInitPackages, pyPkg) } Loading cmd/merge_zips/merge_zips_test.go +30 −1 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ func TestMergeZips(t *testing.T) { stripFiles []string stripDirs []string jar bool par bool sort bool ignoreDuplicates bool stripDirEntries bool Loading Loading @@ -265,6 +266,34 @@ func TestMergeZips(t *testing.T) { }, out: []testZipEntry{withoutTimestamp, a}, }, { name: "emulate par", in: [][]testZipEntry{ { testZipEntry{name: "3/main.py"}, testZipEntry{name: "c/main.py"}, testZipEntry{name: "a/main.py"}, testZipEntry{name: "2/main.py"}, testZipEntry{name: "b/main.py"}, testZipEntry{name: "1/main.py"}, }, }, out: []testZipEntry{ testZipEntry{name: "3/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "c/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "a/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "2/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "b/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "1/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "3/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "c/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "a/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "2/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "b/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "1/main.py", timestamp: jar.DefaultTime}, }, par: true, }, } for _, test := range testCases { Loading @@ -280,7 +309,7 @@ func TestMergeZips(t *testing.T) { writer := zip.NewWriter(out) err := mergeZips(inputZips, writer, "", "", test.sort, test.jar, false, test.stripDirEntries, test.ignoreDuplicates, test.sort, test.jar, test.par, test.stripDirEntries, test.ignoreDuplicates, test.stripFiles, test.stripDirs, test.zipsToNotStrip) closeErr := writer.Close() Loading Loading
cmd/merge_zips/merge_zips.go +6 −4 Original line number Diff line number Diff line Loading @@ -342,7 +342,8 @@ func (oz *OutputZip) writeEntries(entries []string) error { func (oz *OutputZip) getUninitializedPythonPackages(inputZips []InputZip) ([]string, error) { // the runfiles packages needs to be populated with "__init__.py". // the runfiles dirs have been treated as packages. allPackages := make(map[string]bool) var allPackages []string // Using a slice to preserve input order. seenPkgs := make(map[string]bool) initedPackages := make(map[string]bool) getPackage := func(path string) string { ret := filepath.Dir(path) Loading @@ -369,16 +370,17 @@ func (oz *OutputZip) getUninitializedPythonPackages(inputZips []InputZip) ([]str initedPackages[pyPkg] = true } for pyPkg != "" { if _, found := allPackages[pyPkg]; found { if _, found := seenPkgs[pyPkg]; found { break } allPackages[pyPkg] = true seenPkgs[pyPkg] = true allPackages = append(allPackages, pyPkg) pyPkg = getPackage(pyPkg) } } } noInitPackages := make([]string, 0) for pyPkg := range allPackages { for _, pyPkg := range allPackages { if _, found := initedPackages[pyPkg]; !found { noInitPackages = append(noInitPackages, pyPkg) } Loading
cmd/merge_zips/merge_zips_test.go +30 −1 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ func TestMergeZips(t *testing.T) { stripFiles []string stripDirs []string jar bool par bool sort bool ignoreDuplicates bool stripDirEntries bool Loading Loading @@ -265,6 +266,34 @@ func TestMergeZips(t *testing.T) { }, out: []testZipEntry{withoutTimestamp, a}, }, { name: "emulate par", in: [][]testZipEntry{ { testZipEntry{name: "3/main.py"}, testZipEntry{name: "c/main.py"}, testZipEntry{name: "a/main.py"}, testZipEntry{name: "2/main.py"}, testZipEntry{name: "b/main.py"}, testZipEntry{name: "1/main.py"}, }, }, out: []testZipEntry{ testZipEntry{name: "3/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "c/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "a/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "2/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "b/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "1/__init__.py", mode: 0700, timestamp: jar.DefaultTime}, testZipEntry{name: "3/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "c/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "a/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "2/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "b/main.py", timestamp: jar.DefaultTime}, testZipEntry{name: "1/main.py", timestamp: jar.DefaultTime}, }, par: true, }, } for _, test := range testCases { Loading @@ -280,7 +309,7 @@ func TestMergeZips(t *testing.T) { writer := zip.NewWriter(out) err := mergeZips(inputZips, writer, "", "", test.sort, test.jar, false, test.stripDirEntries, test.ignoreDuplicates, test.sort, test.jar, test.par, test.stripDirEntries, test.ignoreDuplicates, test.stripFiles, test.stripDirs, test.zipsToNotStrip) closeErr := writer.Close() Loading