blob: d376e5906b6f16dd47301d791f7b5cb4d1b3ddce [file] [log] [blame]
Jiyong Parkd1063c12019-07-17 20:08:41 +09001// Copyright 2019 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package sdk
16
17import (
Jiyong Parkd1063c12019-07-17 20:08:41 +090018 "testing"
Jiyong Parkd1063c12019-07-17 20:08:41 +090019)
20
Paul Duffin82d90432019-11-30 09:24:33 +000021// Needed in an _test.go file in this package to ensure tests run correctly, particularly in IDE.
22func TestMain(m *testing.M) {
23 runTestWithBuildDir(m)
Jiyong Parkd1063c12019-07-17 20:08:41 +090024}
25
Jiyong Parka7bc8ad2019-10-15 15:20:07 +090026func TestDepNotInRequiredSdks(t *testing.T) {
27 testSdkError(t, `module "myjavalib".*depends on "otherlib".*that isn't part of the required SDKs:.*`, `
28 sdk {
29 name: "mysdk",
Paul Duffina0dbf432019-12-05 11:25:53 +000030 java_header_libs: ["sdkmember"],
Jiyong Parka7bc8ad2019-10-15 15:20:07 +090031 }
32
33 sdk_snapshot {
34 name: "mysdk@1",
Paul Duffina0dbf432019-12-05 11:25:53 +000035 java_header_libs: ["sdkmember_mysdk_1"],
Jiyong Parka7bc8ad2019-10-15 15:20:07 +090036 }
37
38 java_import {
39 name: "sdkmember",
40 prefer: false,
41 host_supported: true,
42 }
43
44 java_import {
45 name: "sdkmember_mysdk_1",
46 sdk_member_name: "sdkmember",
47 host_supported: true,
48 }
49
50 java_library {
51 name: "myjavalib",
52 srcs: ["Test.java"],
53 libs: [
54 "sdkmember",
55 "otherlib",
56 ],
57 system_modules: "none",
58 sdk_version: "none",
59 compile_dex: true,
60 host_supported: true,
61 }
62
63 // this lib is no in mysdk
64 java_library {
65 name: "otherlib",
66 srcs: ["Test.java"],
67 system_modules: "none",
68 sdk_version: "none",
69 compile_dex: true,
70 host_supported: true,
71 }
72
73 apex {
74 name: "myapex",
75 java_libs: ["myjavalib"],
76 uses_sdks: ["mysdk@1"],
77 key: "myapex.key",
78 certificate: ":myapex.cert",
79 }
80 `)
81}
Paul Duffin593b3c92019-12-05 14:31:48 +000082
83// Ensure that prebuilt modules have the same effective visibility as the source
84// modules.
85func TestSnapshotVisibility(t *testing.T) {
86 packageBp := `
87 package {
88 default_visibility: ["//other/foo"],
89 }
90
91 sdk {
92 name: "mysdk",
93 visibility: [
94 "//other/foo",
95 // This short form will be replaced with //package:__subpackages__ in the
96 // generated sdk_snapshot.
97 ":__subpackages__",
98 ],
99 java_header_libs: [
100 "myjavalib",
101 "mypublicjavalib",
102 "mydefaultedjavalib",
103 ],
104 }
105
106 java_library {
107 name: "myjavalib",
108 // Uses package default visibility
109 srcs: ["Test.java"],
110 system_modules: "none",
111 sdk_version: "none",
112 }
113
114 java_library {
115 name: "mypublicjavalib",
116 visibility: ["//visibility:public"],
117 srcs: ["Test.java"],
118 system_modules: "none",
119 sdk_version: "none",
120 }
121
122 java_defaults {
123 name: "myjavadefaults",
124 visibility: ["//other/bar"],
125 }
126
127 java_library {
128 name: "mydefaultedjavalib",
129 defaults: ["myjavadefaults"],
130 srcs: ["Test.java"],
131 system_modules: "none",
132 sdk_version: "none",
133 }
134 `
135
136 result := testSdkWithFs(t, ``,
137 map[string][]byte{
138 "package/Test.java": nil,
139 "package/Android.bp": []byte(packageBp),
140 })
141
142 result.CheckSnapshot("mysdk", "android_common", "package",
143 checkAndroidBpContents(`
144// This is auto-generated. DO NOT EDIT.
145
146java_import {
147 name: "mysdk_myjavalib@current",
148 sdk_member_name: "myjavalib",
149 visibility: ["//other/foo:__pkg__"],
150 jars: ["java/myjavalib.jar"],
151}
152
153java_import {
154 name: "myjavalib",
155 prefer: false,
156 visibility: ["//other/foo:__pkg__"],
157 jars: ["java/myjavalib.jar"],
158}
159
160java_import {
161 name: "mysdk_mypublicjavalib@current",
162 sdk_member_name: "mypublicjavalib",
163 visibility: ["//visibility:public"],
164 jars: ["java/mypublicjavalib.jar"],
165}
166
167java_import {
168 name: "mypublicjavalib",
169 prefer: false,
170 visibility: ["//visibility:public"],
171 jars: ["java/mypublicjavalib.jar"],
172}
173
174java_import {
175 name: "mysdk_mydefaultedjavalib@current",
176 sdk_member_name: "mydefaultedjavalib",
177 visibility: ["//other/bar:__pkg__"],
178 jars: ["java/mydefaultedjavalib.jar"],
179}
180
181java_import {
182 name: "mydefaultedjavalib",
183 prefer: false,
184 visibility: ["//other/bar:__pkg__"],
185 jars: ["java/mydefaultedjavalib.jar"],
186}
187
188sdk_snapshot {
189 name: "mysdk@current",
190 visibility: [
191 "//other/foo:__pkg__",
192 "//package:__subpackages__",
193 ],
194 java_header_libs: [
195 "mysdk_myjavalib@current",
196 "mysdk_mypublicjavalib@current",
197 "mysdk_mydefaultedjavalib@current",
198 ],
199}
200`))
201}