From 593b3c9fb0aaf3e899a6c0d9c18bb2a6e3350731 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Thu, 5 Dec 2019 14:31:48 +0000 Subject: Ensure prebuilt modules have same visibility as source modules Exports visibility and package mutator registration functions so they can be used in sdk testing. Updates sdk test to support visibility and package modules. Adds EffectiveVisibility(...)[]string function to make the effective visibility rules available to sdk snapshot creation. Extracts compositeRule.Strings() []string from compositeRule.String() method so that it can be used by above func. Adds visibility property to sdk snapshot and prebuilt modules along with a test to ensure it works properly. Adds dir parameter to CheckSnapshot so that it can check the snapshot generated for a non-root package. That is required in order to ensure that visibility of :__subpackages__ on a source module in package is resolved to an effective visibility of //:__subpackages__ on its corresponding prebuilt. Test: m conscrypt-module-sdk Bug: 143678475 Change-Id: Icaacac5b9c04726d28e6fec93e49715ac45df7f4 --- sdk/sdk_test.go | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) (limited to 'sdk/sdk_test.go') diff --git a/sdk/sdk_test.go b/sdk/sdk_test.go index f4e944a8..d376e590 100644 --- a/sdk/sdk_test.go +++ b/sdk/sdk_test.go @@ -79,3 +79,123 @@ func TestDepNotInRequiredSdks(t *testing.T) { } `) } + +// Ensure that prebuilt modules have the same effective visibility as the source +// modules. +func TestSnapshotVisibility(t *testing.T) { + packageBp := ` + package { + default_visibility: ["//other/foo"], + } + + sdk { + name: "mysdk", + visibility: [ + "//other/foo", + // This short form will be replaced with //package:__subpackages__ in the + // generated sdk_snapshot. + ":__subpackages__", + ], + java_header_libs: [ + "myjavalib", + "mypublicjavalib", + "mydefaultedjavalib", + ], + } + + java_library { + name: "myjavalib", + // Uses package default visibility + srcs: ["Test.java"], + system_modules: "none", + sdk_version: "none", + } + + java_library { + name: "mypublicjavalib", + visibility: ["//visibility:public"], + srcs: ["Test.java"], + system_modules: "none", + sdk_version: "none", + } + + java_defaults { + name: "myjavadefaults", + visibility: ["//other/bar"], + } + + java_library { + name: "mydefaultedjavalib", + defaults: ["myjavadefaults"], + srcs: ["Test.java"], + system_modules: "none", + sdk_version: "none", + } + ` + + result := testSdkWithFs(t, ``, + map[string][]byte{ + "package/Test.java": nil, + "package/Android.bp": []byte(packageBp), + }) + + result.CheckSnapshot("mysdk", "android_common", "package", + checkAndroidBpContents(` +// This is auto-generated. DO NOT EDIT. + +java_import { + name: "mysdk_myjavalib@current", + sdk_member_name: "myjavalib", + visibility: ["//other/foo:__pkg__"], + jars: ["java/myjavalib.jar"], +} + +java_import { + name: "myjavalib", + prefer: false, + visibility: ["//other/foo:__pkg__"], + jars: ["java/myjavalib.jar"], +} + +java_import { + name: "mysdk_mypublicjavalib@current", + sdk_member_name: "mypublicjavalib", + visibility: ["//visibility:public"], + jars: ["java/mypublicjavalib.jar"], +} + +java_import { + name: "mypublicjavalib", + prefer: false, + visibility: ["//visibility:public"], + jars: ["java/mypublicjavalib.jar"], +} + +java_import { + name: "mysdk_mydefaultedjavalib@current", + sdk_member_name: "mydefaultedjavalib", + visibility: ["//other/bar:__pkg__"], + jars: ["java/mydefaultedjavalib.jar"], +} + +java_import { + name: "mydefaultedjavalib", + prefer: false, + visibility: ["//other/bar:__pkg__"], + jars: ["java/mydefaultedjavalib.jar"], +} + +sdk_snapshot { + name: "mysdk@current", + visibility: [ + "//other/foo:__pkg__", + "//package:__subpackages__", + ], + java_header_libs: [ + "mysdk_myjavalib@current", + "mysdk_mypublicjavalib@current", + "mysdk_mydefaultedjavalib@current", + ], +} +`)) +} -- cgit v1.2.3