From 726d23c26a763cdbded84cab92a2842122635420 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Wed, 22 Jan 2020 16:30:37 +0000 Subject: [PATCH] Improve java_sdk_library handling of test_current When building a library against sdk_version: system_current it uses the system stubs of any java_sdk_library that it references. Previously, when building against sdk_version: test_current this used the public stubs of any java_sdk_library. This change causes it to use the test stubs instead to be consistent with the handling of system and public. Bug: 148080325 Test: updated the test ran m nothing which failed as expected fixed the code ran m nothing again which succeeded Change-Id: I58ec5bd243701c5a5c75664e2bb615ce7b2f2441 --- java/java_test.go | 13 +++++++++++++ java/sdk_library.go | 9 ++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/java/java_test.go b/java/java_test.go index a2788cb8e..c4ab13d05 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1043,6 +1043,12 @@ func TestJavaSdkLibrary(t *testing.T) { libs: ["baz"], sdk_version: "system_current", } + java_library { + name: "baz-test", + srcs: ["c.java"], + libs: ["foo"], + sdk_version: "test_current", + } `) // check the existence of the internal modules @@ -1075,6 +1081,13 @@ func TestJavaSdkLibrary(t *testing.T) { "foo.stubs.jar") } + bazTestJavac := ctx.ModuleForTests("baz-test", "android_common").Rule("javac") + // tests if baz-test is actually linked to the test stubs lib + if !strings.Contains(bazTestJavac.Args["classpath"], "foo.stubs.test.jar") { + t.Errorf("baz-test javac classpath %v does not contain %q", bazTestJavac.Args["classpath"], + "foo.stubs.test.jar") + } + // test if baz has exported SDK lib names foo and bar to qux qux := ctx.ModuleForTests("qux", "android_common") if quxLib, ok := qux.Module().(*Library); ok { diff --git a/java/sdk_library.go b/java/sdk_library.go index 0ef0f23a1..d51d31723 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -689,16 +689,19 @@ func (module *SdkLibrary) sdkJars( return module.Library.ImplementationJars() } } - var paths *scopePaths + var apiScope *apiScope switch sdkVersion.kind { case sdkSystem: - paths = module.getScopePaths(apiScopeSystem) + apiScope = apiScopeSystem + case sdkTest: + apiScope = apiScopeTest case sdkPrivate: return module.Library.HeaderJars() default: - paths = module.getScopePaths(apiScopePublic) + apiScope = apiScopePublic } + paths := module.getScopePaths(apiScope) if headerJars { return paths.stubsHeaderPath } else {