diff options
author | 2020-09-29 16:01:08 +0100 | |
---|---|---|
committer | 2020-10-02 10:59:41 +0100 | |
commit | 157f40f056e5daaff50015134ce229c5b05f26ac (patch) | |
tree | 96f85a0b929da1f5512ed768ae8de7f4a8643b58 /sdk/sdk_test.go | |
parent | 958dd4f6ad7c13231d42e90ee6ff134f47398e19 (diff) |
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
Diffstat (limited to 'sdk/sdk_test.go')
-rw-r--r-- | sdk/sdk_test.go | 51 |
1 files changed, 49 insertions, 2 deletions
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 { |