blob: 819083d237845ed2620680067ded83d732795534 [file] [log] [blame]
Jiakai Zhanga8d86602021-09-26 09:02:17 +00001// Copyright (C) 2021 The Android Open Source Project
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 (
18 "testing"
19
20 "android/soong/android"
21 "android/soong/dexpreopt"
22 "android/soong/java"
23)
24
Paul Duffinb0c28d62022-07-01 15:56:06 +000025func testSnapshotWithSystemServerClasspathFragment(t *testing.T, targetBuildRelease string, expectedUnversionedSdkSnapshot string, expectedVersionedSdkSnapshot string) {
Jiakai Zhanga8d86602021-09-26 09:02:17 +000026 result := android.GroupFixturePreparers(
27 prepareForSdkTestWithJava,
28 java.PrepareForTestWithJavaDefaultModules,
29 java.PrepareForTestWithJavaSdkLibraryFiles,
30 java.FixtureWithLastReleaseApis("mysdklibrary"),
31 dexpreopt.FixtureSetApexSystemServerJars("myapex:mylib", "myapex:mysdklibrary"),
Paul Duffinb0c28d62022-07-01 15:56:06 +000032 android.FixtureModifyEnv(func(env map[string]string) {
33 env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = targetBuildRelease
34 }),
Jiakai Zhanga8d86602021-09-26 09:02:17 +000035 prepareForSdkTestWithApex,
36
37 android.FixtureWithRootAndroidBp(`
38 sdk {
39 name: "mysdk",
40 systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
41 java_sdk_libs: [
42 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
43 // a java_sdk_libs module because it is used in the mysystemserverclasspathfragment's
44 // contents property. However, it is specified here to ensure that duplicates are
45 // correctly deduped.
46 "mysdklibrary",
47 ],
48 }
49
50 apex {
51 name: "myapex",
52 key: "myapex.key",
53 min_sdk_version: "2",
54 systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
55 }
56
57 systemserverclasspath_fragment {
58 name: "mysystemserverclasspathfragment",
59 apex_available: ["myapex"],
60 contents: [
61 "mylib",
62 "mysdklibrary",
63 ],
64 }
65
66 java_library {
67 name: "mylib",
68 apex_available: ["myapex"],
69 srcs: ["Test.java"],
70 system_modules: "none",
71 sdk_version: "none",
72 min_sdk_version: "2",
73 compile_dex: true,
74 permitted_packages: ["mylib"],
75 }
76
77 java_sdk_library {
78 name: "mysdklibrary",
79 apex_available: ["myapex"],
80 srcs: ["Test.java"],
81 shared_library: false,
82 public: {enabled: true},
83 min_sdk_version: "2",
84 }
85 `),
86 ).RunTest(t)
87
88 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinb0c28d62022-07-01 15:56:06 +000089 checkUnversionedAndroidBpContents(expectedUnversionedSdkSnapshot),
90 checkVersionedAndroidBpContents(expectedVersionedSdkSnapshot),
91 )
92}
93
94func TestSnapshotWithSystemServerClasspathFragment(t *testing.T) {
95 t.Run("target-s", func(t *testing.T) {
96 testSnapshotWithSystemServerClasspathFragment(t, "S", `
97// This is auto-generated. DO NOT EDIT.
98
99java_sdk_library_import {
100 name: "mysdklibrary",
101 prefer: false,
102 visibility: ["//visibility:public"],
103 apex_available: ["myapex"],
104 shared_library: false,
105 public: {
106 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
107 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
108 current_api: "sdk_library/public/mysdklibrary.txt",
109 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
110 sdk_version: "current",
111 },
112}
113`, `
114// This is auto-generated. DO NOT EDIT.
115
116java_sdk_library_import {
117 name: "mysdk_mysdklibrary@current",
118 sdk_member_name: "mysdklibrary",
119 visibility: ["//visibility:public"],
120 apex_available: ["myapex"],
121 shared_library: false,
122 public: {
123 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
124 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
125 current_api: "sdk_library/public/mysdklibrary.txt",
126 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
127 sdk_version: "current",
128 },
129}
130
131sdk_snapshot {
132 name: "mysdk@current",
133 visibility: ["//visibility:public"],
134 java_sdk_libs: ["mysdk_mysdklibrary@current"],
135}
136`)
137 })
138
139 t.Run("target-t", func(t *testing.T) {
140 testSnapshotWithSystemServerClasspathFragment(t, "Tiramisu", `
Jiakai Zhanga8d86602021-09-26 09:02:17 +0000141// This is auto-generated. DO NOT EDIT.
142
143java_sdk_library_import {
144 name: "mysdklibrary",
145 prefer: false,
146 visibility: ["//visibility:public"],
147 apex_available: ["myapex"],
148 shared_library: false,
149 public: {
150 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
151 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
152 current_api: "sdk_library/public/mysdklibrary.txt",
153 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
154 sdk_version: "current",
155 },
156}
157
158java_import {
159 name: "mylib",
160 prefer: false,
161 visibility: ["//visibility:public"],
162 apex_available: ["myapex"],
163 jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"],
164 permitted_packages: ["mylib"],
165}
166
167prebuilt_systemserverclasspath_fragment {
168 name: "mysystemserverclasspathfragment",
169 prefer: false,
170 visibility: ["//visibility:public"],
171 apex_available: ["myapex"],
172 contents: [
173 "mylib",
174 "mysdklibrary",
175 ],
176}
Paul Duffinb0c28d62022-07-01 15:56:06 +0000177`, `
Jiakai Zhanga8d86602021-09-26 09:02:17 +0000178// This is auto-generated. DO NOT EDIT.
179
180java_sdk_library_import {
181 name: "mysdk_mysdklibrary@current",
182 sdk_member_name: "mysdklibrary",
183 visibility: ["//visibility:public"],
184 apex_available: ["myapex"],
185 shared_library: false,
186 public: {
187 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
188 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
189 current_api: "sdk_library/public/mysdklibrary.txt",
190 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
191 sdk_version: "current",
192 },
193}
194
195java_import {
196 name: "mysdk_mylib@current",
197 sdk_member_name: "mylib",
198 visibility: ["//visibility:public"],
199 apex_available: ["myapex"],
200 jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"],
201 permitted_packages: ["mylib"],
202}
203
204prebuilt_systemserverclasspath_fragment {
205 name: "mysdk_mysystemserverclasspathfragment@current",
206 sdk_member_name: "mysystemserverclasspathfragment",
207 visibility: ["//visibility:public"],
208 apex_available: ["myapex"],
209 contents: [
210 "mysdk_mylib@current",
211 "mysdk_mysdklibrary@current",
212 ],
213}
214
215sdk_snapshot {
216 name: "mysdk@current",
217 visibility: ["//visibility:public"],
218 java_sdk_libs: ["mysdk_mysdklibrary@current"],
219 java_systemserver_libs: ["mysdk_mylib@current"],
220 systemserverclasspath_fragments: ["mysdk_mysystemserverclasspathfragment@current"],
221}
Paul Duffinb0c28d62022-07-01 15:56:06 +0000222`)
223 })
Jiakai Zhanga8d86602021-09-26 09:02:17 +0000224}