gogio: load module-root Android jars

This commit is contained in:
Joe Julian
2026-04-16 21:03:09 -07:00
parent f71579e799
commit 7b5a6b418c
2 changed files with 33 additions and 5 deletions
+12 -4
View File
@@ -117,6 +117,7 @@ func buildAndroid(tmpDir string, bi *buildInfo) error {
if err != nil { if err != nil {
return err return err
} }
moduleRoot := moduleRootForDir(bi.pkgDir)
var extraJars []string var extraJars []string
visitedPkgs := make(map[string]bool) visitedPkgs := make(map[string]bool)
var visitPkg func(*packages.Package) error var visitPkg func(*packages.Package) error
@@ -125,7 +126,7 @@ func buildAndroid(tmpDir string, bi *buildInfo) error {
return nil return nil
} }
dir := filepath.Dir(p.GoFiles[0]) dir := filepath.Dir(p.GoFiles[0])
jars, err := androidExtraJars(dir) jars, err := androidExtraJars(dir, moduleRoot)
if err != nil { if err != nil {
return err return err
} }
@@ -825,12 +826,19 @@ func copyTree(src, dst string) error {
}) })
} }
func androidExtraJars(dir string) ([]string, error) { func androidExtraJars(dir, moduleRoot string) ([]string, error) {
var jars []string var jars []string
for _, pattern := range []string{ patterns := []string{
filepath.Join(dir, "*.jar"), filepath.Join(dir, "*.jar"),
filepath.Join(dir, "android", "*.jar"), filepath.Join(dir, "android", "*.jar"),
} { }
if moduleRoot != "" && moduleRoot != dir {
patterns = append(patterns,
filepath.Join(moduleRoot, "*.jar"),
filepath.Join(moduleRoot, "android", "*.jar"),
)
}
for _, pattern := range patterns {
matches, err := filepath.Glob(pattern) matches, err := filepath.Glob(pattern)
if err != nil { if err != nil {
return nil, err return nil, err
+21 -1
View File
@@ -18,7 +18,7 @@ func TestAndroidExtraJarsIncludesAndroidSubdirectory(t *testing.T) {
writeTestFile(t, rootJar, "root") writeTestFile(t, rootJar, "root")
writeTestFile(t, androidJar, "android") writeTestFile(t, androidJar, "android")
got, err := androidExtraJars(dir) got, err := androidExtraJars(dir, dir)
if err != nil { if err != nil {
t.Fatalf("androidExtraJars() error = %v", err) t.Fatalf("androidExtraJars() error = %v", err)
} }
@@ -30,6 +30,26 @@ func TestAndroidExtraJarsIncludesAndroidSubdirectory(t *testing.T) {
} }
} }
func TestAndroidExtraJarsIncludesModuleRootAndroidSubdirectory(t *testing.T) {
t.Parallel()
root := t.TempDir()
dir := filepath.Join(root, "cmd", "keepassgo")
if err := os.MkdirAll(dir, 0o755); err != nil {
t.Fatalf("MkdirAll(%q) error = %v", dir, err)
}
moduleAndroidJar := filepath.Join(root, "android", "keepassgo-android.jar")
writeTestFile(t, moduleAndroidJar, "module-android")
got, err := androidExtraJars(dir, root)
if err != nil {
t.Fatalf("androidExtraJars() error = %v", err)
}
if !containsString(got, moduleAndroidJar) {
t.Fatalf("androidExtraJars() = %v, want %q included", got, moduleAndroidJar)
}
}
func TestRenderAndroidManifestIncludesOptionalSnippets(t *testing.T) { func TestRenderAndroidManifestIncludesOptionalSnippets(t *testing.T) {
t.Parallel() t.Parallel()