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
diff --git a/java/java_test.go b/java/java_test.go
index a2788cb..c4ab13d 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -1043,6 +1043,12 @@
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 @@
"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 0ef0f23..d51d317 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -689,16 +689,19 @@
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 {