forked from joejulian/gio-cmd
gogio: deduplicate Android jars
This commit is contained in:
@@ -119,6 +119,7 @@ func buildAndroid(tmpDir string, bi *buildInfo) error {
|
|||||||
}
|
}
|
||||||
moduleRoot := moduleRootForDir(bi.pkgDir)
|
moduleRoot := moduleRootForDir(bi.pkgDir)
|
||||||
var extraJars []string
|
var extraJars []string
|
||||||
|
seenJars := make(map[string]bool)
|
||||||
visitedPkgs := make(map[string]bool)
|
visitedPkgs := make(map[string]bool)
|
||||||
var visitPkg func(*packages.Package) error
|
var visitPkg func(*packages.Package) error
|
||||||
visitPkg = func(p *packages.Package) error {
|
visitPkg = func(p *packages.Package) error {
|
||||||
@@ -130,7 +131,13 @@ func buildAndroid(tmpDir string, bi *buildInfo) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
extraJars = append(extraJars, jars...)
|
for _, jar := range jars {
|
||||||
|
if seenJars[jar] {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
seenJars[jar] = true
|
||||||
|
extraJars = append(extraJars, jar)
|
||||||
|
}
|
||||||
switch {
|
switch {
|
||||||
case p.PkgPath == "net":
|
case p.PkgPath == "net":
|
||||||
perms = append(perms, "network")
|
perms = append(perms, "network")
|
||||||
|
|||||||
@@ -50,6 +50,48 @@ func TestAndroidExtraJarsIncludesModuleRootAndroidSubdirectory(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAndroidExtraJarsDoesNotRepeatSharedModuleJarWhenCollectedAcrossPackages(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
root := t.TempDir()
|
||||||
|
moduleAndroidJar := filepath.Join(root, "android", "keepassgo-android.jar")
|
||||||
|
writeTestFile(t, filepath.Join(root, "go.mod"), "module example.invalid/crew\n")
|
||||||
|
writeTestFile(t, moduleAndroidJar, "module-android")
|
||||||
|
|
||||||
|
dirs := []string{
|
||||||
|
filepath.Join(root, "cmd", "keepassgo"),
|
||||||
|
filepath.Join(root, "internal", "appui"),
|
||||||
|
}
|
||||||
|
seen := make(map[string]bool)
|
||||||
|
var collected []string
|
||||||
|
for _, dir := range dirs {
|
||||||
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
||||||
|
t.Fatalf("MkdirAll(%q) error = %v", dir, err)
|
||||||
|
}
|
||||||
|
jars, err := androidExtraJars(dir, root)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("androidExtraJars(%q) error = %v", dir, err)
|
||||||
|
}
|
||||||
|
for _, jar := range jars {
|
||||||
|
if seen[jar] {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
seen[jar] = true
|
||||||
|
collected = append(collected, jar)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
count := 0
|
||||||
|
for _, jar := range collected {
|
||||||
|
if jar == moduleAndroidJar {
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if count != 1 {
|
||||||
|
t.Fatalf("collected module jar count = %d, want 1 in %v", count, collected)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRenderAndroidManifestIncludesOptionalSnippets(t *testing.T) {
|
func TestRenderAndroidManifestIncludesOptionalSnippets(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user