From 7b5a6b418c31f163462eaeab1d6cac7c6aaa9b2a Mon Sep 17 00:00:00 2001 From: Joe Julian Date: Thu, 16 Apr 2026 21:03:09 -0700 Subject: [PATCH] gogio: load module-root Android jars --- gogio/androidbuild.go | 16 ++++++++++++---- gogio/androidbuild_test.go | 22 +++++++++++++++++++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/gogio/androidbuild.go b/gogio/androidbuild.go index 1a23fe4..3727a4e 100644 --- a/gogio/androidbuild.go +++ b/gogio/androidbuild.go @@ -117,6 +117,7 @@ func buildAndroid(tmpDir string, bi *buildInfo) error { if err != nil { return err } + moduleRoot := moduleRootForDir(bi.pkgDir) var extraJars []string visitedPkgs := make(map[string]bool) var visitPkg func(*packages.Package) error @@ -125,7 +126,7 @@ func buildAndroid(tmpDir string, bi *buildInfo) error { return nil } dir := filepath.Dir(p.GoFiles[0]) - jars, err := androidExtraJars(dir) + jars, err := androidExtraJars(dir, moduleRoot) if err != nil { 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 - for _, pattern := range []string{ + patterns := []string{ filepath.Join(dir, "*.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) if err != nil { return nil, err diff --git a/gogio/androidbuild_test.go b/gogio/androidbuild_test.go index 45a6c26..4ba1d37 100644 --- a/gogio/androidbuild_test.go +++ b/gogio/androidbuild_test.go @@ -18,7 +18,7 @@ func TestAndroidExtraJarsIncludesAndroidSubdirectory(t *testing.T) { writeTestFile(t, rootJar, "root") writeTestFile(t, androidJar, "android") - got, err := androidExtraJars(dir) + got, err := androidExtraJars(dir, dir) if err != nil { 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) { t.Parallel()