xref: /aosp_15_r20/build/soong/sdk/systemserverclasspath_fragment_sdk_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright (C) 2021 The Android Open Source Project
2*333d2b36SAndroid Build Coastguard Worker//
3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*333d2b36SAndroid Build Coastguard Worker//
7*333d2b36SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*333d2b36SAndroid Build Coastguard Worker//
9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*333d2b36SAndroid Build Coastguard Worker// limitations under the License.
14*333d2b36SAndroid Build Coastguard Worker
15*333d2b36SAndroid Build Coastguard Workerpackage sdk
16*333d2b36SAndroid Build Coastguard Worker
17*333d2b36SAndroid Build Coastguard Workerimport (
18*333d2b36SAndroid Build Coastguard Worker	"testing"
19*333d2b36SAndroid Build Coastguard Worker
20*333d2b36SAndroid Build Coastguard Worker	"android/soong/android"
21*333d2b36SAndroid Build Coastguard Worker	"android/soong/dexpreopt"
22*333d2b36SAndroid Build Coastguard Worker	"android/soong/java"
23*333d2b36SAndroid Build Coastguard Worker)
24*333d2b36SAndroid Build Coastguard Worker
25*333d2b36SAndroid Build Coastguard Workerfunc testSnapshotWithSystemServerClasspathFragment(t *testing.T, sdk string, targetBuildRelease string, expectedSdkSnapshot string) {
26*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
27*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
28*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaDefaultModules,
29*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaSdkLibraryFiles,
30*333d2b36SAndroid Build Coastguard Worker		java.FixtureWithLastReleaseApis("mysdklibrary"),
31*333d2b36SAndroid Build Coastguard Worker		dexpreopt.FixtureSetApexSystemServerJars("myapex:mylib", "myapex:mysdklibrary"),
32*333d2b36SAndroid Build Coastguard Worker		android.FixtureModifyEnv(func(env map[string]string) {
33*333d2b36SAndroid Build Coastguard Worker			if targetBuildRelease != "latest" {
34*333d2b36SAndroid Build Coastguard Worker				env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = targetBuildRelease
35*333d2b36SAndroid Build Coastguard Worker			}
36*333d2b36SAndroid Build Coastguard Worker		}),
37*333d2b36SAndroid Build Coastguard Worker		android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
38*333d2b36SAndroid Build Coastguard Worker			variables.Platform_version_active_codenames = []string{"VanillaIceCream"}
39*333d2b36SAndroid Build Coastguard Worker		}),
40*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithApex,
41*333d2b36SAndroid Build Coastguard Worker
42*333d2b36SAndroid Build Coastguard Worker		android.FixtureWithRootAndroidBp(sdk+`
43*333d2b36SAndroid Build Coastguard Worker			apex {
44*333d2b36SAndroid Build Coastguard Worker				name: "myapex",
45*333d2b36SAndroid Build Coastguard Worker				key: "myapex.key",
46*333d2b36SAndroid Build Coastguard Worker				min_sdk_version: "2",
47*333d2b36SAndroid Build Coastguard Worker				systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
48*333d2b36SAndroid Build Coastguard Worker			}
49*333d2b36SAndroid Build Coastguard Worker
50*333d2b36SAndroid Build Coastguard Worker			systemserverclasspath_fragment {
51*333d2b36SAndroid Build Coastguard Worker				name: "mysystemserverclasspathfragment",
52*333d2b36SAndroid Build Coastguard Worker				apex_available: ["myapex"],
53*333d2b36SAndroid Build Coastguard Worker				contents: [
54*333d2b36SAndroid Build Coastguard Worker					"mylib",
55*333d2b36SAndroid Build Coastguard Worker					"mysdklibrary",
56*333d2b36SAndroid Build Coastguard Worker				],
57*333d2b36SAndroid Build Coastguard Worker			}
58*333d2b36SAndroid Build Coastguard Worker
59*333d2b36SAndroid Build Coastguard Worker			java_library {
60*333d2b36SAndroid Build Coastguard Worker				name: "mylib",
61*333d2b36SAndroid Build Coastguard Worker				apex_available: ["myapex"],
62*333d2b36SAndroid Build Coastguard Worker				srcs: ["Test.java"],
63*333d2b36SAndroid Build Coastguard Worker				system_modules: "none",
64*333d2b36SAndroid Build Coastguard Worker				sdk_version: "none",
65*333d2b36SAndroid Build Coastguard Worker				min_sdk_version: "2",
66*333d2b36SAndroid Build Coastguard Worker				compile_dex: true,
67*333d2b36SAndroid Build Coastguard Worker				permitted_packages: ["mylib"],
68*333d2b36SAndroid Build Coastguard Worker				dex_preopt: {
69*333d2b36SAndroid Build Coastguard Worker					profile: "art-profile",
70*333d2b36SAndroid Build Coastguard Worker				},
71*333d2b36SAndroid Build Coastguard Worker			}
72*333d2b36SAndroid Build Coastguard Worker
73*333d2b36SAndroid Build Coastguard Worker			java_sdk_library {
74*333d2b36SAndroid Build Coastguard Worker				name: "mysdklibrary",
75*333d2b36SAndroid Build Coastguard Worker				apex_available: ["myapex"],
76*333d2b36SAndroid Build Coastguard Worker				srcs: ["Test.java"],
77*333d2b36SAndroid Build Coastguard Worker				shared_library: false,
78*333d2b36SAndroid Build Coastguard Worker				public: {enabled: true},
79*333d2b36SAndroid Build Coastguard Worker				min_sdk_version: "2",
80*333d2b36SAndroid Build Coastguard Worker				dex_preopt: {
81*333d2b36SAndroid Build Coastguard Worker					profile: "art-profile",
82*333d2b36SAndroid Build Coastguard Worker				},
83*333d2b36SAndroid Build Coastguard Worker				sdk_version: "current",
84*333d2b36SAndroid Build Coastguard Worker			}
85*333d2b36SAndroid Build Coastguard Worker		`),
86*333d2b36SAndroid Build Coastguard Worker	).RunTest(t)
87*333d2b36SAndroid Build Coastguard Worker
88*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
89*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(expectedSdkSnapshot),
90*333d2b36SAndroid Build Coastguard Worker	)
91*333d2b36SAndroid Build Coastguard Worker}
92*333d2b36SAndroid Build Coastguard Worker
93*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithPartialSystemServerClasspathFragment(t *testing.T) {
94*333d2b36SAndroid Build Coastguard Worker	commonSdk := `
95*333d2b36SAndroid Build Coastguard Worker		apex {
96*333d2b36SAndroid Build Coastguard Worker			name: "myapex",
97*333d2b36SAndroid Build Coastguard Worker			key: "myapex.key",
98*333d2b36SAndroid Build Coastguard Worker			min_sdk_version: "Tiramisu",
99*333d2b36SAndroid Build Coastguard Worker			systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
100*333d2b36SAndroid Build Coastguard Worker		}
101*333d2b36SAndroid Build Coastguard Worker		systemserverclasspath_fragment {
102*333d2b36SAndroid Build Coastguard Worker			name: "mysystemserverclasspathfragment",
103*333d2b36SAndroid Build Coastguard Worker			apex_available: ["myapex"],
104*333d2b36SAndroid Build Coastguard Worker			contents: [
105*333d2b36SAndroid Build Coastguard Worker				"mysdklibrary",
106*333d2b36SAndroid Build Coastguard Worker				"mysdklibrary-future",
107*333d2b36SAndroid Build Coastguard Worker			],
108*333d2b36SAndroid Build Coastguard Worker		}
109*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
110*333d2b36SAndroid Build Coastguard Worker			name: "mysdklibrary",
111*333d2b36SAndroid Build Coastguard Worker			apex_available: ["myapex"],
112*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
113*333d2b36SAndroid Build Coastguard Worker			min_sdk_version: "33", // Tiramisu
114*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
115*333d2b36SAndroid Build Coastguard Worker		}
116*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
117*333d2b36SAndroid Build Coastguard Worker			name: "mysdklibrary-future",
118*333d2b36SAndroid Build Coastguard Worker			apex_available: ["myapex"],
119*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
120*333d2b36SAndroid Build Coastguard Worker			min_sdk_version: "34", // UpsideDownCake
121*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
122*333d2b36SAndroid Build Coastguard Worker		}
123*333d2b36SAndroid Build Coastguard Worker		sdk {
124*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
125*333d2b36SAndroid Build Coastguard Worker			apexes: ["myapex"],
126*333d2b36SAndroid Build Coastguard Worker		}
127*333d2b36SAndroid Build Coastguard Worker	`
128*333d2b36SAndroid Build Coastguard Worker
129*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
130*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
131*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaDefaultModules,
132*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaSdkLibraryFiles,
133*333d2b36SAndroid Build Coastguard Worker		java.FixtureWithLastReleaseApis("mysdklibrary", "mysdklibrary-future"),
134*333d2b36SAndroid Build Coastguard Worker		dexpreopt.FixtureSetApexSystemServerJars("myapex:mysdklibrary", "myapex:mysdklibrary-future"),
135*333d2b36SAndroid Build Coastguard Worker		android.FixtureModifyEnv(func(env map[string]string) {
136*333d2b36SAndroid Build Coastguard Worker			// targeting Tiramisu here means that we won't export mysdklibrary-future
137*333d2b36SAndroid Build Coastguard Worker			env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = "Tiramisu"
138*333d2b36SAndroid Build Coastguard Worker		}),
139*333d2b36SAndroid Build Coastguard Worker		android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
140*333d2b36SAndroid Build Coastguard Worker			variables.Platform_version_active_codenames = []string{"UpsideDownCake"}
141*333d2b36SAndroid Build Coastguard Worker		}),
142*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithApex,
143*333d2b36SAndroid Build Coastguard Worker		android.FixtureWithRootAndroidBp(commonSdk),
144*333d2b36SAndroid Build Coastguard Worker	).RunTest(t)
145*333d2b36SAndroid Build Coastguard Worker
146*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "", checkAndroidBpContents(
147*333d2b36SAndroid Build Coastguard Worker		`// This is auto-generated. DO NOT EDIT.
148*333d2b36SAndroid Build Coastguard Worker
149*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
150*333d2b36SAndroid Build Coastguard Worker    name: "mysdklibrary",
151*333d2b36SAndroid Build Coastguard Worker    prefer: false,
152*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
153*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
154*333d2b36SAndroid Build Coastguard Worker    shared_library: true,
155*333d2b36SAndroid Build Coastguard Worker    public: {
156*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
157*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
158*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/mysdklibrary.txt",
159*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/mysdklibrary-removed.txt",
160*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
161*333d2b36SAndroid Build Coastguard Worker    },
162*333d2b36SAndroid Build Coastguard Worker    system: {
163*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/system/mysdklibrary-stubs.jar"],
164*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/system/mysdklibrary_stub_sources"],
165*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/system/mysdklibrary.txt",
166*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/system/mysdklibrary-removed.txt",
167*333d2b36SAndroid Build Coastguard Worker        sdk_version: "system_current",
168*333d2b36SAndroid Build Coastguard Worker    },
169*333d2b36SAndroid Build Coastguard Worker    test: {
170*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/test/mysdklibrary-stubs.jar"],
171*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/test/mysdklibrary_stub_sources"],
172*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/test/mysdklibrary.txt",
173*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/test/mysdklibrary-removed.txt",
174*333d2b36SAndroid Build Coastguard Worker        sdk_version: "test_current",
175*333d2b36SAndroid Build Coastguard Worker    },
176*333d2b36SAndroid Build Coastguard Worker}
177*333d2b36SAndroid Build Coastguard Worker
178*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment {
179*333d2b36SAndroid Build Coastguard Worker    name: "mysystemserverclasspathfragment",
180*333d2b36SAndroid Build Coastguard Worker    prefer: false,
181*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
182*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
183*333d2b36SAndroid Build Coastguard Worker    contents: ["mysdklibrary"],
184*333d2b36SAndroid Build Coastguard Worker} `))
185*333d2b36SAndroid Build Coastguard Worker}
186*333d2b36SAndroid Build Coastguard Worker
187*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithEmptySystemServerClasspathFragment(t *testing.T) {
188*333d2b36SAndroid Build Coastguard Worker	commonSdk := `
189*333d2b36SAndroid Build Coastguard Worker		apex {
190*333d2b36SAndroid Build Coastguard Worker			name: "myapex",
191*333d2b36SAndroid Build Coastguard Worker			key: "myapex.key",
192*333d2b36SAndroid Build Coastguard Worker			min_sdk_version: "Tiramisu",
193*333d2b36SAndroid Build Coastguard Worker			systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
194*333d2b36SAndroid Build Coastguard Worker		}
195*333d2b36SAndroid Build Coastguard Worker		systemserverclasspath_fragment {
196*333d2b36SAndroid Build Coastguard Worker			name: "mysystemserverclasspathfragment",
197*333d2b36SAndroid Build Coastguard Worker			apex_available: ["myapex"],
198*333d2b36SAndroid Build Coastguard Worker			contents: ["mysdklibrary"],
199*333d2b36SAndroid Build Coastguard Worker		}
200*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
201*333d2b36SAndroid Build Coastguard Worker			name: "mysdklibrary",
202*333d2b36SAndroid Build Coastguard Worker			apex_available: ["myapex"],
203*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
204*333d2b36SAndroid Build Coastguard Worker			min_sdk_version: "34", // UpsideDownCake
205*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
206*333d2b36SAndroid Build Coastguard Worker		}
207*333d2b36SAndroid Build Coastguard Worker		sdk {
208*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
209*333d2b36SAndroid Build Coastguard Worker			apexes: ["myapex"],
210*333d2b36SAndroid Build Coastguard Worker		}
211*333d2b36SAndroid Build Coastguard Worker	`
212*333d2b36SAndroid Build Coastguard Worker
213*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
214*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
215*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaDefaultModules,
216*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaSdkLibraryFiles,
217*333d2b36SAndroid Build Coastguard Worker		java.FixtureWithLastReleaseApis("mysdklibrary"),
218*333d2b36SAndroid Build Coastguard Worker		dexpreopt.FixtureSetApexSystemServerJars("myapex:mysdklibrary"),
219*333d2b36SAndroid Build Coastguard Worker		android.FixtureModifyEnv(func(env map[string]string) {
220*333d2b36SAndroid Build Coastguard Worker			// targeting Tiramisu here means that we won't export mysdklibrary
221*333d2b36SAndroid Build Coastguard Worker			env["SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE"] = "Tiramisu"
222*333d2b36SAndroid Build Coastguard Worker		}),
223*333d2b36SAndroid Build Coastguard Worker		android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
224*333d2b36SAndroid Build Coastguard Worker			variables.Platform_version_active_codenames = []string{"UpsideDownCake"}
225*333d2b36SAndroid Build Coastguard Worker		}),
226*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithApex,
227*333d2b36SAndroid Build Coastguard Worker		android.FixtureWithRootAndroidBp(commonSdk),
228*333d2b36SAndroid Build Coastguard Worker	).RunTest(t)
229*333d2b36SAndroid Build Coastguard Worker
230*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "", checkAndroidBpContents(`// This is auto-generated. DO NOT EDIT.`))
231*333d2b36SAndroid Build Coastguard Worker}
232*333d2b36SAndroid Build Coastguard Worker
233*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithSystemServerClasspathFragment(t *testing.T) {
234*333d2b36SAndroid Build Coastguard Worker
235*333d2b36SAndroid Build Coastguard Worker	commonSdk := `
236*333d2b36SAndroid Build Coastguard Workersdk {
237*333d2b36SAndroid Build Coastguard Worker	name: "mysdk",
238*333d2b36SAndroid Build Coastguard Worker	systemserverclasspath_fragments: ["mysystemserverclasspathfragment"],
239*333d2b36SAndroid Build Coastguard Worker	java_sdk_libs: [
240*333d2b36SAndroid Build Coastguard Worker		// This is not strictly needed as it should be automatically added to the sdk_snapshot as
241*333d2b36SAndroid Build Coastguard Worker		// a java_sdk_libs module because it is used in the mysystemserverclasspathfragment's
242*333d2b36SAndroid Build Coastguard Worker		// contents property. However, it is specified here to ensure that duplicates are
243*333d2b36SAndroid Build Coastguard Worker		// correctly deduped.
244*333d2b36SAndroid Build Coastguard Worker		"mysdklibrary",
245*333d2b36SAndroid Build Coastguard Worker	],
246*333d2b36SAndroid Build Coastguard Worker}
247*333d2b36SAndroid Build Coastguard Worker	`
248*333d2b36SAndroid Build Coastguard Worker
249*333d2b36SAndroid Build Coastguard Worker	expectedLatestSnapshot := `
250*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
251*333d2b36SAndroid Build Coastguard Worker
252*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
253*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
254*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_mysdklibrary"],
255*333d2b36SAndroid Build Coastguard Worker}
256*333d2b36SAndroid Build Coastguard Worker
257*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
258*333d2b36SAndroid Build Coastguard Worker    name: "mysdklibrary",
259*333d2b36SAndroid Build Coastguard Worker    prefer: false,
260*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
261*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
262*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
263*333d2b36SAndroid Build Coastguard Worker    dex_preopt: {
264*333d2b36SAndroid Build Coastguard Worker        profile_guided: true,
265*333d2b36SAndroid Build Coastguard Worker    },
266*333d2b36SAndroid Build Coastguard Worker    public: {
267*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
268*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
269*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/mysdklibrary.txt",
270*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/mysdklibrary-removed.txt",
271*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
272*333d2b36SAndroid Build Coastguard Worker    },
273*333d2b36SAndroid Build Coastguard Worker}
274*333d2b36SAndroid Build Coastguard Worker
275*333d2b36SAndroid Build Coastguard Workerjava_import {
276*333d2b36SAndroid Build Coastguard Worker    name: "mylib",
277*333d2b36SAndroid Build Coastguard Worker    prefer: false,
278*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
279*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
280*333d2b36SAndroid Build Coastguard Worker    jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"],
281*333d2b36SAndroid Build Coastguard Worker    min_sdk_version: "2",
282*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["mylib"],
283*333d2b36SAndroid Build Coastguard Worker    dex_preopt: {
284*333d2b36SAndroid Build Coastguard Worker        profile_guided: true,
285*333d2b36SAndroid Build Coastguard Worker    },
286*333d2b36SAndroid Build Coastguard Worker}
287*333d2b36SAndroid Build Coastguard Worker
288*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment {
289*333d2b36SAndroid Build Coastguard Worker    name: "mysystemserverclasspathfragment",
290*333d2b36SAndroid Build Coastguard Worker    prefer: false,
291*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
292*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
293*333d2b36SAndroid Build Coastguard Worker    contents: [
294*333d2b36SAndroid Build Coastguard Worker        "mylib",
295*333d2b36SAndroid Build Coastguard Worker        "mysdklibrary",
296*333d2b36SAndroid Build Coastguard Worker    ],
297*333d2b36SAndroid Build Coastguard Worker}
298*333d2b36SAndroid Build Coastguard Worker`
299*333d2b36SAndroid Build Coastguard Worker
300*333d2b36SAndroid Build Coastguard Worker	t.Run("target-s", func(t *testing.T) {
301*333d2b36SAndroid Build Coastguard Worker		testSnapshotWithSystemServerClasspathFragment(t, commonSdk, "S", `
302*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
303*333d2b36SAndroid Build Coastguard Worker
304*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
305*333d2b36SAndroid Build Coastguard Worker    name: "mysdklibrary",
306*333d2b36SAndroid Build Coastguard Worker    prefer: false,
307*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
308*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
309*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
310*333d2b36SAndroid Build Coastguard Worker    public: {
311*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
312*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
313*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/mysdklibrary.txt",
314*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/mysdklibrary-removed.txt",
315*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
316*333d2b36SAndroid Build Coastguard Worker    },
317*333d2b36SAndroid Build Coastguard Worker}
318*333d2b36SAndroid Build Coastguard Worker`)
319*333d2b36SAndroid Build Coastguard Worker	})
320*333d2b36SAndroid Build Coastguard Worker
321*333d2b36SAndroid Build Coastguard Worker	t.Run("target-t", func(t *testing.T) {
322*333d2b36SAndroid Build Coastguard Worker		testSnapshotWithSystemServerClasspathFragment(t, commonSdk, "Tiramisu", `
323*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
324*333d2b36SAndroid Build Coastguard Worker
325*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
326*333d2b36SAndroid Build Coastguard Worker    name: "mysdklibrary",
327*333d2b36SAndroid Build Coastguard Worker    prefer: false,
328*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
329*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
330*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
331*333d2b36SAndroid Build Coastguard Worker    public: {
332*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
333*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
334*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/mysdklibrary.txt",
335*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/mysdklibrary-removed.txt",
336*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
337*333d2b36SAndroid Build Coastguard Worker    },
338*333d2b36SAndroid Build Coastguard Worker}
339*333d2b36SAndroid Build Coastguard Worker
340*333d2b36SAndroid Build Coastguard Workerjava_import {
341*333d2b36SAndroid Build Coastguard Worker    name: "mylib",
342*333d2b36SAndroid Build Coastguard Worker    prefer: false,
343*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
344*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
345*333d2b36SAndroid Build Coastguard Worker    jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"],
346*333d2b36SAndroid Build Coastguard Worker    min_sdk_version: "2",
347*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["mylib"],
348*333d2b36SAndroid Build Coastguard Worker}
349*333d2b36SAndroid Build Coastguard Worker
350*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment {
351*333d2b36SAndroid Build Coastguard Worker    name: "mysystemserverclasspathfragment",
352*333d2b36SAndroid Build Coastguard Worker    prefer: false,
353*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
354*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
355*333d2b36SAndroid Build Coastguard Worker    contents: [
356*333d2b36SAndroid Build Coastguard Worker        "mylib",
357*333d2b36SAndroid Build Coastguard Worker        "mysdklibrary",
358*333d2b36SAndroid Build Coastguard Worker    ],
359*333d2b36SAndroid Build Coastguard Worker}
360*333d2b36SAndroid Build Coastguard Worker`)
361*333d2b36SAndroid Build Coastguard Worker	})
362*333d2b36SAndroid Build Coastguard Worker
363*333d2b36SAndroid Build Coastguard Worker	t.Run("target-u", func(t *testing.T) {
364*333d2b36SAndroid Build Coastguard Worker		testSnapshotWithSystemServerClasspathFragment(t, commonSdk, "UpsideDownCake", `
365*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
366*333d2b36SAndroid Build Coastguard Worker
367*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
368*333d2b36SAndroid Build Coastguard Worker    name: "mysdklibrary",
369*333d2b36SAndroid Build Coastguard Worker    prefer: false,
370*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
371*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
372*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
373*333d2b36SAndroid Build Coastguard Worker    dex_preopt: {
374*333d2b36SAndroid Build Coastguard Worker        profile_guided: true,
375*333d2b36SAndroid Build Coastguard Worker    },
376*333d2b36SAndroid Build Coastguard Worker    public: {
377*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
378*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
379*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/mysdklibrary.txt",
380*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/mysdklibrary-removed.txt",
381*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
382*333d2b36SAndroid Build Coastguard Worker    },
383*333d2b36SAndroid Build Coastguard Worker}
384*333d2b36SAndroid Build Coastguard Worker
385*333d2b36SAndroid Build Coastguard Workerjava_import {
386*333d2b36SAndroid Build Coastguard Worker    name: "mylib",
387*333d2b36SAndroid Build Coastguard Worker    prefer: false,
388*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
389*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
390*333d2b36SAndroid Build Coastguard Worker    jars: ["java_systemserver_libs/snapshot/jars/are/invalid/mylib.jar"],
391*333d2b36SAndroid Build Coastguard Worker    min_sdk_version: "2",
392*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["mylib"],
393*333d2b36SAndroid Build Coastguard Worker    dex_preopt: {
394*333d2b36SAndroid Build Coastguard Worker        profile_guided: true,
395*333d2b36SAndroid Build Coastguard Worker    },
396*333d2b36SAndroid Build Coastguard Worker}
397*333d2b36SAndroid Build Coastguard Worker
398*333d2b36SAndroid Build Coastguard Workerprebuilt_systemserverclasspath_fragment {
399*333d2b36SAndroid Build Coastguard Worker    name: "mysystemserverclasspathfragment",
400*333d2b36SAndroid Build Coastguard Worker    prefer: false,
401*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
402*333d2b36SAndroid Build Coastguard Worker    apex_available: ["myapex"],
403*333d2b36SAndroid Build Coastguard Worker    contents: [
404*333d2b36SAndroid Build Coastguard Worker        "mylib",
405*333d2b36SAndroid Build Coastguard Worker        "mysdklibrary",
406*333d2b36SAndroid Build Coastguard Worker    ],
407*333d2b36SAndroid Build Coastguard Worker}
408*333d2b36SAndroid Build Coastguard Worker`)
409*333d2b36SAndroid Build Coastguard Worker	})
410*333d2b36SAndroid Build Coastguard Worker
411*333d2b36SAndroid Build Coastguard Worker	t.Run("added-directly", func(t *testing.T) {
412*333d2b36SAndroid Build Coastguard Worker		testSnapshotWithSystemServerClasspathFragment(t, commonSdk, `latest`, expectedLatestSnapshot)
413*333d2b36SAndroid Build Coastguard Worker	})
414*333d2b36SAndroid Build Coastguard Worker
415*333d2b36SAndroid Build Coastguard Worker	t.Run("added-via-apex", func(t *testing.T) {
416*333d2b36SAndroid Build Coastguard Worker		testSnapshotWithSystemServerClasspathFragment(t, `
417*333d2b36SAndroid Build Coastguard Worker			sdk {
418*333d2b36SAndroid Build Coastguard Worker				name: "mysdk",
419*333d2b36SAndroid Build Coastguard Worker				apexes: ["myapex"],
420*333d2b36SAndroid Build Coastguard Worker			}
421*333d2b36SAndroid Build Coastguard Worker		`, `latest`, expectedLatestSnapshot)
422*333d2b36SAndroid Build Coastguard Worker	})
423*333d2b36SAndroid Build Coastguard Worker}
424