From 861a896c965ddc11f7b913379e5c97d6dde37901 Mon Sep 17 00:00:00 2001 From: Ulya Trafimovich Date: Fri, 26 Feb 2021 14:49:07 +0000 Subject: [PATCH] Add `provides_uses_library` example to TestUsesLibrary check. Current test behaviour is incorrect, because libraries added via `uses_libs`/`optional_uses_libs` ignore `provides_uses_lib` property. The added TODO entries point at the incorrect behaviour, to be fixed in the follow-up CLs. Bug: 132357300 Test: m nothing Change-Id: I35bfe227797aa37aa539e872052335677c798ee5 --- java/app_test.go | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/java/app_test.go b/java/app_test.go index 72a53e970..49364f04f 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -2245,17 +2245,33 @@ func TestUsesLibraries(t *testing.T) { sdk_version: "current", } + // A library that has to use "provides_uses_lib", because: + // - it is not an SDK library + // - its library name is different from its module name + java_library { + name: "non-sdk-lib", + provides_uses_lib: "com.non.sdk.lib", + installable: true, + srcs: ["a.java"], + } + android_app { name: "app", srcs: ["a.java"], - libs: ["qux", "quuz.stubs"], + libs: [ + "qux", + "quuz.stubs" + ], static_libs: [ "static-runtime-helper", // statically linked component libraries should not pull their SDK libraries, // so "fred" should not be added to class loader context "fred.stubs", ], - uses_libs: ["foo"], + uses_libs: [ + "foo", + "non-sdk-lib" + ], sdk_version: "current", optional_uses_libs: [ "bar", @@ -2267,7 +2283,11 @@ func TestUsesLibraries(t *testing.T) { name: "prebuilt", apk: "prebuilts/apk/app.apk", certificate: "platform", - uses_libs: ["foo", "android.test.runner"], + uses_libs: [ + "foo", + "non-sdk-lib", + "android.test.runner" + ], optional_uses_libs: [ "bar", "baz", @@ -2292,8 +2312,10 @@ func TestUsesLibraries(t *testing.T) { `--uses-library qux ` + `--uses-library quuz ` + `--uses-library foo ` + // TODO(b/132357300): "foo" should not be passed to manifest_fixer + `--uses-library non-sdk-lib ` + // TODO(b/132357300): "non-sdk-lib" should not be passed to manifest_fixer `--uses-library bar ` + // TODO(b/132357300): "bar" should not be passed to manifest_fixer - `--uses-library runtime-library` + `--uses-library runtime-library ` + + `--uses-library com.non.sdk.lib` // TODO(b/132357300): "com.non.sdk.lib" should not be passed to manifest_fixer if actualManifestFixerArgs != expectManifestFixerArgs { t.Errorf("unexpected manifest_fixer args:\n\texpect: %q\n\tactual: %q", expectManifestFixerArgs, actualManifestFixerArgs) @@ -2302,9 +2324,11 @@ func TestUsesLibraries(t *testing.T) { // Test that all libraries are verified (library order matters). verifyCmd := app.Rule("verify_uses_libraries").RuleParams.Command verifyArgs := `--uses-library foo ` + + `--uses-library non-sdk-lib ` + // TODO(b/132357300): "non-sdk-lib" should not be here `--uses-library qux ` + `--uses-library quuz ` + `--uses-library runtime-library ` + + `--uses-library com.non.sdk.lib ` + `--optional-uses-library bar ` + `--optional-uses-library baz ` if !strings.Contains(verifyCmd, verifyArgs) { @@ -2313,7 +2337,9 @@ func TestUsesLibraries(t *testing.T) { // Test that all libraries are verified for an APK (library order matters). verifyApkCmd := prebuilt.Rule("verify_uses_libraries").RuleParams.Command - verifyApkReqLibs := `uses_library_names="foo android.test.runner"` + // TODO(b/132357300): "non-sdk-lib" should not be here + // TODO(b/132357300): "com.non.sdk.lib" should be here + verifyApkReqLibs := `uses_library_names="foo non-sdk-lib android.test.runner"` verifyApkOptLibs := `optional_uses_library_names="bar baz"` if !strings.Contains(verifyApkCmd, verifyApkReqLibs) { t.Errorf("wanted %q in %q", verifyApkReqLibs, verifyApkCmd) @@ -2328,6 +2354,7 @@ func TestUsesLibraries(t *testing.T) { `PCL[/system/framework/qux.jar]#` + `PCL[/system/framework/quuz.jar]#` + `PCL[/system/framework/foo.jar]#` + + `PCL[/system/framework/non-sdk-lib.jar]#` + `PCL[/system/framework/bar.jar]#` + `PCL[/system/framework/runtime-library.jar]` if !strings.Contains(cmd, w) { @@ -2357,6 +2384,7 @@ func TestUsesLibraries(t *testing.T) { cmd = prebuilt.Rule("dexpreopt").RuleParams.Command if w := `--target-context-for-sdk any` + ` PCL[/system/framework/foo.jar]` + + `#PCL[/system/framework/non-sdk-lib.jar]` + `#PCL[/system/framework/android.test.runner.jar]` + `#PCL[/system/framework/bar.jar] `; !strings.Contains(cmd, w) { t.Errorf("wanted %q in %q", w, cmd)