From 157f40f056e5daaff50015134ce229c5b05f26ac Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 29 Sep 2020 16:01:08 +0100 Subject: Add prebuilt_visibility property Some mainline modules provide an `sdk` and one or more set of module_exports. When the snapshots are unpacked into separate prebuilts directories (one per snapshot) then any dependencies from a member of one snapshot to a member of another may require the latter to have additional visibility rules. Previously, these rules had to be added to each source module. This change allows additional visibility rules to be specified on the sdk/module_exports that are added to all the prebuilts in its snapshot. Bug: 155921753 Bug: 168301990 Test: m nothing Change-Id: Ia3eacb5749981f04770ae9872a8013e43c5c6ef1 --- sdk/sdk_test.go | 51 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) (limited to 'sdk/sdk_test.go') diff --git a/sdk/sdk_test.go b/sdk/sdk_test.go index ef62b79ba..2e6c62a9b 100644 --- a/sdk/sdk_test.go +++ b/sdk/sdk_test.go @@ -108,6 +108,9 @@ func TestSnapshotVisibility(t *testing.T) { // generated sdk_snapshot. ":__subpackages__", ], + prebuilt_visibility: [ + "//prebuilts/mysdk", + ], java_header_libs: [ "myjavalib", "mypublicjavalib", @@ -176,6 +179,7 @@ java_import { visibility: [ "//other/foo", "//package", + "//prebuilts/mysdk", ], jars: ["java/myjavalib.jar"], } @@ -186,6 +190,7 @@ java_import { visibility: [ "//other/foo", "//package", + "//prebuilts/mysdk", ], jars: ["java/myjavalib.jar"], } @@ -210,6 +215,7 @@ java_import { visibility: [ "//other/bar", "//package", + "//prebuilts/mysdk", ], jars: ["java/mydefaultedjavalib.jar"], } @@ -220,6 +226,7 @@ java_import { visibility: [ "//other/bar", "//package", + "//prebuilts/mysdk", ], jars: ["java/mydefaultedjavalib.jar"], } @@ -227,14 +234,20 @@ java_import { java_import { name: "mysdk_myprivatejavalib@current", sdk_member_name: "myprivatejavalib", - visibility: ["//package"], + visibility: [ + "//package", + "//prebuilts/mysdk", + ], jars: ["java/myprivatejavalib.jar"], } java_import { name: "myprivatejavalib", prefer: false, - visibility: ["//package"], + visibility: [ + "//package", + "//prebuilts/mysdk", + ], jars: ["java/myprivatejavalib.jar"], } @@ -254,6 +267,40 @@ sdk_snapshot { `)) } +func TestPrebuiltVisibilityProperty_IsValidated(t *testing.T) { + testSdkError(t, `prebuilt_visibility: cannot mix "//visibility:private" with any other visibility rules`, ` + sdk { + name: "mysdk", + prebuilt_visibility: [ + "//foo", + "//visibility:private", + ], + } +`) +} + +func TestPrebuiltVisibilityProperty_AddPrivate(t *testing.T) { + testSdkError(t, `prebuilt_visibility: "//visibility:private" does not widen the visibility`, ` + sdk { + name: "mysdk", + prebuilt_visibility: [ + "//visibility:private", + ], + java_header_libs: [ + "myjavalib", + ], + } + + java_library { + name: "myjavalib", + // Uses package default visibility + srcs: ["Test.java"], + system_modules: "none", + sdk_version: "none", + } +`) +} + func TestSDkInstall(t *testing.T) { sdk := ` sdk { -- cgit v1.2.3-59-g8ed1b