From 56d4490d59568476ad9eafdc385ab9bd1ac242f3 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Fri, 31 Jan 2020 13:36:25 +0000 Subject: java_sdk_library_import - expose system and test stubs Previously, the java_sdk_library_import only exposed the public stubs. This change adds support for exposing system and test stubs too by adding separate structures for public, system and test scopes. The existing properties are kept for legacy reasons (and because libs can be common across the differents scopes). It extracts some code that is common to both sdk library and sdk library import. The legacy support will be removed in a future change once all existing usages have been switched over. Bug: 148080325 Test: m droid TARGET_BUILD_APPS=Camera2 m Change-Id: I0b26cc8af9ee044437ff3b80c1eca611816b9386 --- java/java_test.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'java/java_test.go') diff --git a/java/java_test.go b/java/java_test.go index c4ab13d05..924f76bdc 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -458,7 +458,7 @@ func TestPrebuilts(t *testing.T) { java_library { name: "foo", srcs: ["a.java", ":stubs-source"], - libs: ["bar", "sdklib"], + libs: ["bar", "sdklib", "sdklib-legacy"], static_libs: ["baz"], } @@ -478,10 +478,17 @@ func TestPrebuilts(t *testing.T) { } java_sdk_library_import { - name: "sdklib", + name: "sdklib-legacy", jars: ["b.jar"], } + java_sdk_library_import { + name: "sdklib", + public: { + jars: ["c.jar"], + }, + } + prebuilt_stubs_sources { name: "stubs-source", srcs: ["stubs/sources"], @@ -531,6 +538,54 @@ func assertDeepEquals(t *testing.T, message string, expected interface{}, actual } } +func TestJavaSdkLibraryImport(t *testing.T) { + ctx, _ := testJava(t, ` + java_library { + name: "foo", + srcs: ["a.java"], + libs: ["sdklib"], + sdk_version: "current", + } + + java_library { + name: "foo.system", + srcs: ["a.java"], + libs: ["sdklib"], + sdk_version: "system_current", + } + + java_library { + name: "foo.test", + srcs: ["a.java"], + libs: ["sdklib"], + sdk_version: "test_current", + } + + java_sdk_library_import { + name: "sdklib", + public: { + jars: ["a.jar"], + }, + system: { + jars: ["b.jar"], + }, + test: { + jars: ["c.jar"], + }, + } + `) + + for _, scope := range []string{"", ".system", ".test"} { + fooModule := ctx.ModuleForTests("foo"+scope, "android_common") + javac := fooModule.Rule("javac") + + sdklibStubsJar := ctx.ModuleForTests("sdklib.stubs"+scope, "android_common").Rule("combineJar").Output + if !strings.Contains(javac.Args["classpath"], sdklibStubsJar.String()) { + t.Errorf("foo classpath %v does not contain %q", javac.Args["classpath"], sdklibStubsJar.String()) + } + } +} + func TestDefaults(t *testing.T) { ctx, _ := testJava(t, ` java_defaults { -- cgit v1.2.3-59-g8ed1b