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)
|
||||
var extraJars []string
|
||||
seenJars := make(map[string]bool)
|
||||
visitedPkgs := make(map[string]bool)
|
||||
var visitPkg func(*packages.Package) error
|
||||
visitPkg = func(p *packages.Package) error {
|
||||
@@ -130,7 +131,13 @@ func buildAndroid(tmpDir string, bi *buildInfo) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
extraJars = append(extraJars, jars...)
|
||||
for _, jar := range jars {
|
||||
if seenJars[jar] {
|
||||
continue
|
||||
}
|
||||
seenJars[jar] = true
|
||||
extraJars = append(extraJars, jar)
|
||||
}
|
||||
switch {
|
||||
case p.PkgPath == "net":
|
||||
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) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user