blob: 96837e3dd954bd829d98d3dab1733077a9a46b5a [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,
Jooyung Han5e9013b2020-03-10 06:23:13 +090061 apex_available: ["myapex"],
Jiyong Parka7bc8ad2019-10-15 15:20:07 +090062 }
63
64 // this lib is no in mysdk
65 java_library {
66 name: "otherlib",
67 srcs: ["Test.java"],
68 system_modules: "none",
69 sdk_version: "none",
70 compile_dex: true,
71 host_supported: true,
72 }
73
74 apex {
75 name: "myapex",
76 java_libs: ["myjavalib"],
77 uses_sdks: ["mysdk@1"],
78 key: "myapex.key",
79 certificate: ":myapex.cert",
80 }
81 `)
82}
Paul Duffin593b3c92019-12-05 14:31:48 +000083
84// Ensure that prebuilt modules have the same effective visibility as the source
85// modules.
86func TestSnapshotVisibility(t *testing.T) {
87 packageBp := `
88 package {
89 default_visibility: ["//other/foo"],
90 }
91
92 sdk {
93 name: "mysdk",
94 visibility: [
95 "//other/foo",
96 // This short form will be replaced with //package:__subpackages__ in the
97 // generated sdk_snapshot.
98 ":__subpackages__",
99 ],
100 java_header_libs: [
101 "myjavalib",
102 "mypublicjavalib",
103 "mydefaultedjavalib",
104 ],
105 }
106
107 java_library {
108 name: "myjavalib",
109 // Uses package default visibility
110 srcs: ["Test.java"],
111 system_modules: "none",
112 sdk_version: "none",
113 }
114
Paul Duffin44885e22020-02-19 16:10:09 +0000115 java_defaults {
116 name: "java-defaults",
Jooyung Han5e9013b2020-03-10 06:23:13 +0900117 visibility: ["//other/bar"],
Paul Duffin44885e22020-02-19 16:10:09 +0000118 }
119
Paul Duffin593b3c92019-12-05 14:31:48 +0000120 java_library {
121 name: "mypublicjavalib",
Paul Duffin44885e22020-02-19 16:10:09 +0000122 defaults: ["java-defaults"],
Paul Duffin593b3c92019-12-05 14:31:48 +0000123 visibility: ["//visibility:public"],
124 srcs: ["Test.java"],
125 system_modules: "none",
126 sdk_version: "none",
127 }
128
129 java_defaults {
130 name: "myjavadefaults",
131 visibility: ["//other/bar"],
132 }
133
134 java_library {
135 name: "mydefaultedjavalib",
136 defaults: ["myjavadefaults"],
137 srcs: ["Test.java"],
138 system_modules: "none",
139 sdk_version: "none",
140 }
141 `
142
143 result := testSdkWithFs(t, ``,
144 map[string][]byte{
145 "package/Test.java": nil,
146 "package/Android.bp": []byte(packageBp),
147 })
148
Paul Duffin1356d8c2020-02-25 19:26:33 +0000149 result.CheckSnapshot("mysdk", "package",
Paul Duffin593b3c92019-12-05 14:31:48 +0000150 checkAndroidBpContents(`
151// This is auto-generated. DO NOT EDIT.
152
153java_import {
154 name: "mysdk_myjavalib@current",
155 sdk_member_name: "myjavalib",
156 visibility: ["//other/foo:__pkg__"],
157 jars: ["java/myjavalib.jar"],
158}
159
160java_import {
161 name: "myjavalib",
162 prefer: false,
163 visibility: ["//other/foo:__pkg__"],
164 jars: ["java/myjavalib.jar"],
165}
166
167java_import {
168 name: "mysdk_mypublicjavalib@current",
169 sdk_member_name: "mypublicjavalib",
170 visibility: ["//visibility:public"],
171 jars: ["java/mypublicjavalib.jar"],
172}
173
174java_import {
175 name: "mypublicjavalib",
176 prefer: false,
177 visibility: ["//visibility:public"],
178 jars: ["java/mypublicjavalib.jar"],
179}
180
181java_import {
182 name: "mysdk_mydefaultedjavalib@current",
183 sdk_member_name: "mydefaultedjavalib",
184 visibility: ["//other/bar:__pkg__"],
185 jars: ["java/mydefaultedjavalib.jar"],
186}
187
188java_import {
189 name: "mydefaultedjavalib",
190 prefer: false,
191 visibility: ["//other/bar:__pkg__"],
192 jars: ["java/mydefaultedjavalib.jar"],
193}
194
195sdk_snapshot {
196 name: "mysdk@current",
197 visibility: [
198 "//other/foo:__pkg__",
199 "//package:__subpackages__",
200 ],
201 java_header_libs: [
202 "mysdk_myjavalib@current",
203 "mysdk_mypublicjavalib@current",
204 "mysdk_mydefaultedjavalib@current",
205 ],
206}
207`))
208}
Nicolas Geoffray1228e9c2020-02-27 13:45:35 +0000209
210func TestSDkInstall(t *testing.T) {
211 sdk := `
212 sdk {
213 name: "mysdk",
214 }
215 `
216 result := testSdkWithFs(t, ``,
217 map[string][]byte{
218 "Android.bp": []byte(sdk),
219 })
220
221 result.CheckSnapshot("mysdk", "",
222 checkAllOtherCopyRules(`.intermediates/mysdk/common_os/mysdk-current.zip -> mysdk-current.zip`),
223 )
224}