| // Copyright 2019 Google Inc. All rights reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| package sdk |
| |
| import ( |
| "testing" |
| ) |
| |
| // Needed in an _test.go file in this package to ensure tests run correctly, particularly in IDE. |
| func TestMain(m *testing.M) { |
| runTestWithBuildDir(m) |
| } |
| |
| func TestDepNotInRequiredSdks(t *testing.T) { |
| testSdkError(t, `module "myjavalib".*depends on "otherlib".*that isn't part of the required SDKs:.*`, ` |
| sdk { |
| name: "mysdk", |
| java_header_libs: ["sdkmember"], |
| } |
| |
| sdk_snapshot { |
| name: "mysdk@1", |
| java_header_libs: ["sdkmember_mysdk_1"], |
| } |
| |
| java_import { |
| name: "sdkmember", |
| prefer: false, |
| host_supported: true, |
| } |
| |
| java_import { |
| name: "sdkmember_mysdk_1", |
| sdk_member_name: "sdkmember", |
| host_supported: true, |
| } |
| |
| java_library { |
| name: "myjavalib", |
| srcs: ["Test.java"], |
| libs: [ |
| "sdkmember", |
| "otherlib", |
| ], |
| system_modules: "none", |
| sdk_version: "none", |
| compile_dex: true, |
| host_supported: true, |
| } |
| |
| // this lib is no in mysdk |
| java_library { |
| name: "otherlib", |
| srcs: ["Test.java"], |
| system_modules: "none", |
| sdk_version: "none", |
| compile_dex: true, |
| host_supported: true, |
| } |
| |
| apex { |
| name: "myapex", |
| java_libs: ["myjavalib"], |
| uses_sdks: ["mysdk@1"], |
| key: "myapex.key", |
| certificate: ":myapex.cert", |
| } |
| `) |
| } |
| |
| // 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", |
| ], |
| } |
| `)) |
| } |