xref: /aosp_15_r20/build/soong/sdk/java_sdk_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright (C) 2019 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	"fmt"
19*333d2b36SAndroid Build Coastguard Worker	"testing"
20*333d2b36SAndroid Build Coastguard Worker
21*333d2b36SAndroid Build Coastguard Worker	"android/soong/android"
22*333d2b36SAndroid Build Coastguard Worker	"android/soong/dexpreopt"
23*333d2b36SAndroid Build Coastguard Worker	"android/soong/java"
24*333d2b36SAndroid Build Coastguard Worker)
25*333d2b36SAndroid Build Coastguard Worker
26*333d2b36SAndroid Build Coastguard Workervar prepareForSdkTestWithJava = android.GroupFixturePreparers(
27*333d2b36SAndroid Build Coastguard Worker	java.PrepareForTestWithJavaBuildComponents,
28*333d2b36SAndroid Build Coastguard Worker	PrepareForTestWithSdkBuildComponents,
29*333d2b36SAndroid Build Coastguard Worker	dexpreopt.PrepareForTestWithFakeDex2oatd,
30*333d2b36SAndroid Build Coastguard Worker
31*333d2b36SAndroid Build Coastguard Worker	// Ensure that all source paths are provided. This helps ensure that the snapshot generation is
32*333d2b36SAndroid Build Coastguard Worker	// consistent and all files referenced from the snapshot's Android.bp file have actually been
33*333d2b36SAndroid Build Coastguard Worker	// copied into the snapshot.
34*333d2b36SAndroid Build Coastguard Worker	android.PrepareForTestDisallowNonExistentPaths,
35*333d2b36SAndroid Build Coastguard Worker
36*333d2b36SAndroid Build Coastguard Worker	// Files needs by most of the tests.
37*333d2b36SAndroid Build Coastguard Worker	android.MockFS{
38*333d2b36SAndroid Build Coastguard Worker		"Test.java":   nil,
39*333d2b36SAndroid Build Coastguard Worker		"art-profile": nil,
40*333d2b36SAndroid Build Coastguard Worker	}.AddToFixture(),
41*333d2b36SAndroid Build Coastguard Worker)
42*333d2b36SAndroid Build Coastguard Worker
43*333d2b36SAndroid Build Coastguard Workervar prepareForSdkTestWithJavaSdkLibrary = android.GroupFixturePreparers(
44*333d2b36SAndroid Build Coastguard Worker	prepareForSdkTestWithJava,
45*333d2b36SAndroid Build Coastguard Worker	java.PrepareForTestWithJavaDefaultModules,
46*333d2b36SAndroid Build Coastguard Worker	java.PrepareForTestWithJavaSdkLibraryFiles,
47*333d2b36SAndroid Build Coastguard Worker	java.FixtureWithLastReleaseApis("myjavalib"),
48*333d2b36SAndroid Build Coastguard Worker	android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"),
49*333d2b36SAndroid Build Coastguard Worker)
50*333d2b36SAndroid Build Coastguard Worker
51*333d2b36SAndroid Build Coastguard Worker// Contains tests for SDK members provided by the java package.
52*333d2b36SAndroid Build Coastguard Worker
53*333d2b36SAndroid Build Coastguard Workerfunc TestSdkDependsOnSourceEvenWhenPrebuiltPreferred(t *testing.T) {
54*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
55*333d2b36SAndroid Build Coastguard Worker		sdk {
56*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
57*333d2b36SAndroid Build Coastguard Worker			java_header_libs: ["sdkmember"],
58*333d2b36SAndroid Build Coastguard Worker		}
59*333d2b36SAndroid Build Coastguard Worker
60*333d2b36SAndroid Build Coastguard Worker		java_library {
61*333d2b36SAndroid Build Coastguard Worker			name: "sdkmember",
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		}
66*333d2b36SAndroid Build Coastguard Worker	`)
67*333d2b36SAndroid Build Coastguard Worker
68*333d2b36SAndroid Build Coastguard Worker	// Make sure that the mysdk module depends on "sdkmember" and not "prebuilt_sdkmember".
69*333d2b36SAndroid Build Coastguard Worker	sdkChecker := func(t *testing.T, result *android.TestResult) {
70*333d2b36SAndroid Build Coastguard Worker		java.CheckModuleDependencies(t, result.TestContext, "mysdk", "android_common", []string{"sdkmember"})
71*333d2b36SAndroid Build Coastguard Worker	}
72*333d2b36SAndroid Build Coastguard Worker
73*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
74*333d2b36SAndroid Build Coastguard Worker		snapshotTestChecker(checkSnapshotWithSourcePreferred, sdkChecker),
75*333d2b36SAndroid Build Coastguard Worker		snapshotTestChecker(checkSnapshotPreferredWithSource, sdkChecker),
76*333d2b36SAndroid Build Coastguard Worker	)
77*333d2b36SAndroid Build Coastguard Worker}
78*333d2b36SAndroid Build Coastguard Worker
79*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaHeaderLibrary(t *testing.T) {
80*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
81*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
82*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
83*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
84*333d2b36SAndroid Build Coastguard Worker		sdk {
85*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
86*333d2b36SAndroid Build Coastguard Worker			java_header_libs: ["myjavalib"],
87*333d2b36SAndroid Build Coastguard Worker		}
88*333d2b36SAndroid Build Coastguard Worker
89*333d2b36SAndroid Build Coastguard Worker		java_library {
90*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
91*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
92*333d2b36SAndroid Build Coastguard Worker			aidl: {
93*333d2b36SAndroid Build Coastguard Worker				export_include_dirs: ["aidl"],
94*333d2b36SAndroid Build Coastguard Worker			},
95*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
96*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
97*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
98*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
99*333d2b36SAndroid Build Coastguard Worker			permitted_packages: ["pkg.myjavalib"],
100*333d2b36SAndroid Build Coastguard Worker		}
101*333d2b36SAndroid Build Coastguard Worker	`)
102*333d2b36SAndroid Build Coastguard Worker
103*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
104*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
105*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
106*333d2b36SAndroid Build Coastguard Worker
107*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
108*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
109*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
110*333d2b36SAndroid Build Coastguard Worker}
111*333d2b36SAndroid Build Coastguard Worker
112*333d2b36SAndroid Build Coastguard Workerjava_import {
113*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
114*333d2b36SAndroid Build Coastguard Worker    prefer: false,
115*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
116*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
117*333d2b36SAndroid Build Coastguard Worker    jars: ["java/myjavalib.jar"],
118*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["pkg.myjavalib"],
119*333d2b36SAndroid Build Coastguard Worker}
120*333d2b36SAndroid Build Coastguard Worker`),
121*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
122*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
123*333d2b36SAndroid Build Coastguard Workeraidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
124*333d2b36SAndroid Build Coastguard Worker`),
125*333d2b36SAndroid Build Coastguard Worker	)
126*333d2b36SAndroid Build Coastguard Worker}
127*333d2b36SAndroid Build Coastguard Worker
128*333d2b36SAndroid Build Coastguard Workerfunc TestHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
129*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
130*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
131*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
132*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
133*333d2b36SAndroid Build Coastguard Worker		sdk {
134*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
135*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
136*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
137*333d2b36SAndroid Build Coastguard Worker			java_header_libs: ["myjavalib"],
138*333d2b36SAndroid Build Coastguard Worker		}
139*333d2b36SAndroid Build Coastguard Worker
140*333d2b36SAndroid Build Coastguard Worker		java_library {
141*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
142*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
143*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
144*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
145*333d2b36SAndroid Build Coastguard Worker			aidl: {
146*333d2b36SAndroid Build Coastguard Worker				export_include_dirs: ["aidl"],
147*333d2b36SAndroid Build Coastguard Worker			},
148*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
149*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
150*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
151*333d2b36SAndroid Build Coastguard Worker		}
152*333d2b36SAndroid Build Coastguard Worker	`)
153*333d2b36SAndroid Build Coastguard Worker
154*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
155*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
156*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
157*333d2b36SAndroid Build Coastguard Worker
158*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
159*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
160*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
161*333d2b36SAndroid Build Coastguard Worker}
162*333d2b36SAndroid Build Coastguard Worker
163*333d2b36SAndroid Build Coastguard Workerjava_import {
164*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
165*333d2b36SAndroid Build Coastguard Worker    prefer: false,
166*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
167*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
168*333d2b36SAndroid Build Coastguard Worker    device_supported: false,
169*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
170*333d2b36SAndroid Build Coastguard Worker    jars: ["java/myjavalib.jar"],
171*333d2b36SAndroid Build Coastguard Worker}
172*333d2b36SAndroid Build Coastguard Worker`),
173*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
174*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/linux_glibc_common/javac-header/myjavalib.jar -> java/myjavalib.jar
175*333d2b36SAndroid Build Coastguard Workeraidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
176*333d2b36SAndroid Build Coastguard Worker`),
177*333d2b36SAndroid Build Coastguard Worker	)
178*333d2b36SAndroid Build Coastguard Worker}
179*333d2b36SAndroid Build Coastguard Worker
180*333d2b36SAndroid Build Coastguard Workerfunc TestDeviceAndHostSnapshotWithJavaHeaderLibrary(t *testing.T) {
181*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
182*333d2b36SAndroid Build Coastguard Worker		sdk {
183*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
184*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
185*333d2b36SAndroid Build Coastguard Worker			java_header_libs: ["myjavalib"],
186*333d2b36SAndroid Build Coastguard Worker		}
187*333d2b36SAndroid Build Coastguard Worker
188*333d2b36SAndroid Build Coastguard Worker		java_library {
189*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
190*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
191*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
192*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
193*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
194*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
195*333d2b36SAndroid Build Coastguard Worker		}
196*333d2b36SAndroid Build Coastguard Worker	`)
197*333d2b36SAndroid Build Coastguard Worker
198*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
199*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
200*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
201*333d2b36SAndroid Build Coastguard Worker
202*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
203*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
204*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
205*333d2b36SAndroid Build Coastguard Worker}
206*333d2b36SAndroid Build Coastguard Worker
207*333d2b36SAndroid Build Coastguard Workerjava_import {
208*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
209*333d2b36SAndroid Build Coastguard Worker    prefer: false,
210*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
211*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
212*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
213*333d2b36SAndroid Build Coastguard Worker    target: {
214*333d2b36SAndroid Build Coastguard Worker        android: {
215*333d2b36SAndroid Build Coastguard Worker            jars: ["java/android/myjavalib.jar"],
216*333d2b36SAndroid Build Coastguard Worker        },
217*333d2b36SAndroid Build Coastguard Worker        linux_glibc: {
218*333d2b36SAndroid Build Coastguard Worker            jars: ["java/linux_glibc/myjavalib.jar"],
219*333d2b36SAndroid Build Coastguard Worker        },
220*333d2b36SAndroid Build Coastguard Worker    },
221*333d2b36SAndroid Build Coastguard Worker}
222*333d2b36SAndroid Build Coastguard Worker`),
223*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
224*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/android/myjavalib.jar
225*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/linux_glibc_common/javac-header/myjavalib.jar -> java/linux_glibc/myjavalib.jar
226*333d2b36SAndroid Build Coastguard Worker`),
227*333d2b36SAndroid Build Coastguard Worker	)
228*333d2b36SAndroid Build Coastguard Worker}
229*333d2b36SAndroid Build Coastguard Worker
230*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaImplLibrary(t *testing.T) {
231*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
232*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
233*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
234*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("resource.txt", nil),
235*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
236*333d2b36SAndroid Build Coastguard Worker		module_exports {
237*333d2b36SAndroid Build Coastguard Worker			name: "myexports",
238*333d2b36SAndroid Build Coastguard Worker			java_libs: ["myjavalib"],
239*333d2b36SAndroid Build Coastguard Worker		}
240*333d2b36SAndroid Build Coastguard Worker
241*333d2b36SAndroid Build Coastguard Worker		java_library {
242*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
243*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
244*333d2b36SAndroid Build Coastguard Worker			java_resources: ["resource.txt"],
245*333d2b36SAndroid Build Coastguard Worker			aidl: {
246*333d2b36SAndroid Build Coastguard Worker				export_include_dirs: ["aidl"],
247*333d2b36SAndroid Build Coastguard Worker			},
248*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
249*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
250*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
251*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
252*333d2b36SAndroid Build Coastguard Worker		}
253*333d2b36SAndroid Build Coastguard Worker	`)
254*333d2b36SAndroid Build Coastguard Worker
255*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "myexports", "",
256*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
257*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
258*333d2b36SAndroid Build Coastguard Worker
259*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
260*333d2b36SAndroid Build Coastguard Worker    name: "myexports.contributions",
261*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
262*333d2b36SAndroid Build Coastguard Worker}
263*333d2b36SAndroid Build Coastguard Worker
264*333d2b36SAndroid Build Coastguard Workerjava_import {
265*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
266*333d2b36SAndroid Build Coastguard Worker    prefer: false,
267*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
268*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
269*333d2b36SAndroid Build Coastguard Worker    jars: ["java/myjavalib.jar"],
270*333d2b36SAndroid Build Coastguard Worker}
271*333d2b36SAndroid Build Coastguard Worker`),
272*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
273*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/android_common/withres/myjavalib.jar -> java/myjavalib.jar
274*333d2b36SAndroid Build Coastguard Workeraidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
275*333d2b36SAndroid Build Coastguard Worker`),
276*333d2b36SAndroid Build Coastguard Worker	)
277*333d2b36SAndroid Build Coastguard Worker}
278*333d2b36SAndroid Build Coastguard Worker
279*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaBootLibrary(t *testing.T) {
280*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
281*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
282*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("aidl", nil),
283*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("resource.txt", nil),
284*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
285*333d2b36SAndroid Build Coastguard Worker		sdk {
286*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
287*333d2b36SAndroid Build Coastguard Worker			java_boot_libs: ["myjavalib"],
288*333d2b36SAndroid Build Coastguard Worker		}
289*333d2b36SAndroid Build Coastguard Worker
290*333d2b36SAndroid Build Coastguard Worker		java_library {
291*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
292*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
293*333d2b36SAndroid Build Coastguard Worker			java_resources: ["resource.txt"],
294*333d2b36SAndroid Build Coastguard Worker			// The aidl files should not be copied to the snapshot because a java_boot_libs member is not
295*333d2b36SAndroid Build Coastguard Worker			// intended to be used for compiling Java, only for accessing the dex implementation jar.
296*333d2b36SAndroid Build Coastguard Worker			aidl: {
297*333d2b36SAndroid Build Coastguard Worker				export_include_dirs: ["aidl"],
298*333d2b36SAndroid Build Coastguard Worker			},
299*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
300*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
301*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
302*333d2b36SAndroid Build Coastguard Worker			permitted_packages: ["pkg.myjavalib"],
303*333d2b36SAndroid Build Coastguard Worker		}
304*333d2b36SAndroid Build Coastguard Worker	`)
305*333d2b36SAndroid Build Coastguard Worker
306*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
307*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
308*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
309*333d2b36SAndroid Build Coastguard Worker
310*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
311*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
312*333d2b36SAndroid Build Coastguard Worker    contents: [],
313*333d2b36SAndroid Build Coastguard Worker}
314*333d2b36SAndroid Build Coastguard Worker
315*333d2b36SAndroid Build Coastguard Workerjava_import {
316*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
317*333d2b36SAndroid Build Coastguard Worker    prefer: false,
318*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
319*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
320*333d2b36SAndroid Build Coastguard Worker    jars: ["java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar"],
321*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["pkg.myjavalib"],
322*333d2b36SAndroid Build Coastguard Worker}
323*333d2b36SAndroid Build Coastguard Worker`),
324*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
325*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/myjavalib.jar
326*333d2b36SAndroid Build Coastguard Worker`),
327*333d2b36SAndroid Build Coastguard Worker	)
328*333d2b36SAndroid Build Coastguard Worker}
329*333d2b36SAndroid Build Coastguard Worker
330*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaBootLibrary_UpdatableMedia(t *testing.T) {
331*333d2b36SAndroid Build Coastguard Worker	runTest := func(t *testing.T, targetBuildRelease, expectedJarPath, expectedCopyRule string) {
332*333d2b36SAndroid Build Coastguard Worker		result := android.GroupFixturePreparers(
333*333d2b36SAndroid Build Coastguard Worker			prepareForSdkTestWithJava,
334*333d2b36SAndroid Build Coastguard Worker			android.FixtureMergeEnv(map[string]string{
335*333d2b36SAndroid Build Coastguard Worker				"SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
336*333d2b36SAndroid Build Coastguard Worker			}),
337*333d2b36SAndroid Build Coastguard Worker			android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
338*333d2b36SAndroid Build Coastguard Worker				variables.Platform_version_active_codenames = []string{"VanillaIceCream"}
339*333d2b36SAndroid Build Coastguard Worker			}),
340*333d2b36SAndroid Build Coastguard Worker		).RunTestWithBp(t, `
341*333d2b36SAndroid Build Coastguard Worker		sdk {
342*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
343*333d2b36SAndroid Build Coastguard Worker			java_boot_libs: ["updatable-media"],
344*333d2b36SAndroid Build Coastguard Worker		}
345*333d2b36SAndroid Build Coastguard Worker
346*333d2b36SAndroid Build Coastguard Worker		java_library {
347*333d2b36SAndroid Build Coastguard Worker			name: "updatable-media",
348*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
349*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
350*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
351*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
352*333d2b36SAndroid Build Coastguard Worker			permitted_packages: ["pkg.media"],
353*333d2b36SAndroid Build Coastguard Worker			apex_available: ["com.android.media"],
354*333d2b36SAndroid Build Coastguard Worker		}
355*333d2b36SAndroid Build Coastguard Worker	`)
356*333d2b36SAndroid Build Coastguard Worker
357*333d2b36SAndroid Build Coastguard Worker		CheckSnapshot(t, result, "mysdk", "",
358*333d2b36SAndroid Build Coastguard Worker			checkAndroidBpContents(fmt.Sprintf(`
359*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
360*333d2b36SAndroid Build Coastguard Worker
361*333d2b36SAndroid Build Coastguard Workerjava_import {
362*333d2b36SAndroid Build Coastguard Worker    name: "updatable-media",
363*333d2b36SAndroid Build Coastguard Worker    prefer: false,
364*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
365*333d2b36SAndroid Build Coastguard Worker    apex_available: ["com.android.media"],
366*333d2b36SAndroid Build Coastguard Worker    jars: ["%s"],
367*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["pkg.media"],
368*333d2b36SAndroid Build Coastguard Worker}
369*333d2b36SAndroid Build Coastguard Worker`, expectedJarPath)),
370*333d2b36SAndroid Build Coastguard Worker			checkAllCopyRules(expectedCopyRule),
371*333d2b36SAndroid Build Coastguard Worker		)
372*333d2b36SAndroid Build Coastguard Worker	}
373*333d2b36SAndroid Build Coastguard Worker
374*333d2b36SAndroid Build Coastguard Worker	t.Run("updatable-media in S", func(t *testing.T) {
375*333d2b36SAndroid Build Coastguard Worker		runTest(t, "S", "java/updatable-media.jar", `
376*333d2b36SAndroid Build Coastguard Worker.intermediates/updatable-media/android_common/package-check/updatable-media.jar -> java/updatable-media.jar
377*333d2b36SAndroid Build Coastguard Worker`)
378*333d2b36SAndroid Build Coastguard Worker	})
379*333d2b36SAndroid Build Coastguard Worker
380*333d2b36SAndroid Build Coastguard Worker	t.Run("updatable-media in T", func(t *testing.T) {
381*333d2b36SAndroid Build Coastguard Worker		runTest(t, "Tiramisu", "java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar", `
382*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/updatable-media.jar
383*333d2b36SAndroid Build Coastguard Worker`)
384*333d2b36SAndroid Build Coastguard Worker	})
385*333d2b36SAndroid Build Coastguard Worker}
386*333d2b36SAndroid Build Coastguard Worker
387*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaLibrary_MinSdkVersion(t *testing.T) {
388*333d2b36SAndroid Build Coastguard Worker	runTest := func(t *testing.T, targetBuildRelease, minSdkVersion, expectedMinSdkVersion string) {
389*333d2b36SAndroid Build Coastguard Worker		result := android.GroupFixturePreparers(
390*333d2b36SAndroid Build Coastguard Worker			prepareForSdkTestWithJava,
391*333d2b36SAndroid Build Coastguard Worker			android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
392*333d2b36SAndroid Build Coastguard Worker				variables.Platform_version_active_codenames = []string{"S", "Tiramisu", "Unfinalized"}
393*333d2b36SAndroid Build Coastguard Worker			}),
394*333d2b36SAndroid Build Coastguard Worker			android.FixtureMergeEnv(map[string]string{
395*333d2b36SAndroid Build Coastguard Worker				"SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease,
396*333d2b36SAndroid Build Coastguard Worker			}),
397*333d2b36SAndroid Build Coastguard Worker		).RunTestWithBp(t, fmt.Sprintf(`
398*333d2b36SAndroid Build Coastguard Worker		sdk {
399*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
400*333d2b36SAndroid Build Coastguard Worker			java_header_libs: ["mylib"],
401*333d2b36SAndroid Build Coastguard Worker		}
402*333d2b36SAndroid Build Coastguard Worker
403*333d2b36SAndroid Build Coastguard Worker		java_library {
404*333d2b36SAndroid Build Coastguard Worker			name: "mylib",
405*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
406*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
407*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
408*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
409*333d2b36SAndroid Build Coastguard Worker			min_sdk_version: "%s",
410*333d2b36SAndroid Build Coastguard Worker		}
411*333d2b36SAndroid Build Coastguard Worker	`, minSdkVersion))
412*333d2b36SAndroid Build Coastguard Worker
413*333d2b36SAndroid Build Coastguard Worker		expectedMinSdkVersionLine := ""
414*333d2b36SAndroid Build Coastguard Worker		if expectedMinSdkVersion != "" {
415*333d2b36SAndroid Build Coastguard Worker			expectedMinSdkVersionLine = fmt.Sprintf("    min_sdk_version: %q,\n", expectedMinSdkVersion)
416*333d2b36SAndroid Build Coastguard Worker		}
417*333d2b36SAndroid Build Coastguard Worker
418*333d2b36SAndroid Build Coastguard Worker		CheckSnapshot(t, result, "mysdk", "",
419*333d2b36SAndroid Build Coastguard Worker			checkAndroidBpContents(fmt.Sprintf(`
420*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
421*333d2b36SAndroid Build Coastguard Worker
422*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
423*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
424*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_mylib"],
425*333d2b36SAndroid Build Coastguard Worker}
426*333d2b36SAndroid Build Coastguard Worker
427*333d2b36SAndroid Build Coastguard Workerjava_import {
428*333d2b36SAndroid Build Coastguard Worker    name: "mylib",
429*333d2b36SAndroid Build Coastguard Worker    prefer: false,
430*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
431*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
432*333d2b36SAndroid Build Coastguard Worker    jars: ["java/mylib.jar"],
433*333d2b36SAndroid Build Coastguard Worker%s}
434*333d2b36SAndroid Build Coastguard Worker`, expectedMinSdkVersionLine)),
435*333d2b36SAndroid Build Coastguard Worker		)
436*333d2b36SAndroid Build Coastguard Worker	}
437*333d2b36SAndroid Build Coastguard Worker
438*333d2b36SAndroid Build Coastguard Worker	t.Run("min_sdk_version=S in S", func(t *testing.T) {
439*333d2b36SAndroid Build Coastguard Worker		// min_sdk_version was not added to java_import until Tiramisu.
440*333d2b36SAndroid Build Coastguard Worker		runTest(t, "S", "S", "")
441*333d2b36SAndroid Build Coastguard Worker	})
442*333d2b36SAndroid Build Coastguard Worker
443*333d2b36SAndroid Build Coastguard Worker	t.Run("min_sdk_version=S in Tiramisu", func(t *testing.T) {
444*333d2b36SAndroid Build Coastguard Worker		// The canonical form of S is 31.
445*333d2b36SAndroid Build Coastguard Worker		runTest(t, "Tiramisu", "S", "31")
446*333d2b36SAndroid Build Coastguard Worker	})
447*333d2b36SAndroid Build Coastguard Worker
448*333d2b36SAndroid Build Coastguard Worker	t.Run("min_sdk_version=24 in Tiramisu", func(t *testing.T) {
449*333d2b36SAndroid Build Coastguard Worker		// A numerical min_sdk_version is already in canonical form.
450*333d2b36SAndroid Build Coastguard Worker		runTest(t, "Tiramisu", "24", "24")
451*333d2b36SAndroid Build Coastguard Worker	})
452*333d2b36SAndroid Build Coastguard Worker
453*333d2b36SAndroid Build Coastguard Worker	t.Run("min_sdk_version=Unfinalized in latest", func(t *testing.T) {
454*333d2b36SAndroid Build Coastguard Worker		// An unfinalized min_sdk_version has no numeric value yet.
455*333d2b36SAndroid Build Coastguard Worker		runTest(t, "", "Unfinalized", "Unfinalized")
456*333d2b36SAndroid Build Coastguard Worker	})
457*333d2b36SAndroid Build Coastguard Worker}
458*333d2b36SAndroid Build Coastguard Worker
459*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSystemserverLibrary(t *testing.T) {
460*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
461*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
462*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("aidl", nil),
463*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("resource.txt", nil),
464*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
465*333d2b36SAndroid Build Coastguard Worker		module_exports {
466*333d2b36SAndroid Build Coastguard Worker			name: "myexports",
467*333d2b36SAndroid Build Coastguard Worker			java_systemserver_libs: ["myjavalib"],
468*333d2b36SAndroid Build Coastguard Worker		}
469*333d2b36SAndroid Build Coastguard Worker
470*333d2b36SAndroid Build Coastguard Worker		java_library {
471*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
472*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
473*333d2b36SAndroid Build Coastguard Worker			java_resources: ["resource.txt"],
474*333d2b36SAndroid Build Coastguard Worker			// The aidl files should not be copied to the snapshot because a java_systemserver_libs member
475*333d2b36SAndroid Build Coastguard Worker			// is not intended to be used for compiling Java, only for accessing the dex implementation
476*333d2b36SAndroid Build Coastguard Worker			// jar.
477*333d2b36SAndroid Build Coastguard Worker			aidl: {
478*333d2b36SAndroid Build Coastguard Worker				export_include_dirs: ["aidl"],
479*333d2b36SAndroid Build Coastguard Worker			},
480*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
481*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
482*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
483*333d2b36SAndroid Build Coastguard Worker			permitted_packages: ["pkg.myjavalib"],
484*333d2b36SAndroid Build Coastguard Worker		}
485*333d2b36SAndroid Build Coastguard Worker	`)
486*333d2b36SAndroid Build Coastguard Worker
487*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "myexports", "",
488*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
489*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
490*333d2b36SAndroid Build Coastguard Worker
491*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
492*333d2b36SAndroid Build Coastguard Worker    name: "myexports.contributions",
493*333d2b36SAndroid Build Coastguard Worker    contents: [],
494*333d2b36SAndroid Build Coastguard Worker}
495*333d2b36SAndroid Build Coastguard Worker
496*333d2b36SAndroid Build Coastguard Workerjava_import {
497*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
498*333d2b36SAndroid Build Coastguard Worker    prefer: false,
499*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
500*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
501*333d2b36SAndroid Build Coastguard Worker    jars: ["java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar"],
502*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["pkg.myjavalib"],
503*333d2b36SAndroid Build Coastguard Worker}
504*333d2b36SAndroid Build Coastguard Worker`),
505*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
506*333d2b36SAndroid Build Coastguard Worker.intermediates/myexports/common_os/empty -> java_systemserver_libs/snapshot/jars/are/invalid/myjavalib.jar
507*333d2b36SAndroid Build Coastguard Worker`),
508*333d2b36SAndroid Build Coastguard Worker	)
509*333d2b36SAndroid Build Coastguard Worker}
510*333d2b36SAndroid Build Coastguard Worker
511*333d2b36SAndroid Build Coastguard Workerfunc TestHostSnapshotWithJavaImplLibrary(t *testing.T) {
512*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
513*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
514*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("aidl/foo/bar/Test.aidl", nil),
515*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
516*333d2b36SAndroid Build Coastguard Worker		module_exports {
517*333d2b36SAndroid Build Coastguard Worker			name: "myexports",
518*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
519*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
520*333d2b36SAndroid Build Coastguard Worker			java_libs: ["myjavalib"],
521*333d2b36SAndroid Build Coastguard Worker		}
522*333d2b36SAndroid Build Coastguard Worker
523*333d2b36SAndroid Build Coastguard Worker		java_library {
524*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
525*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
526*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
527*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
528*333d2b36SAndroid Build Coastguard Worker			aidl: {
529*333d2b36SAndroid Build Coastguard Worker				export_include_dirs: ["aidl"],
530*333d2b36SAndroid Build Coastguard Worker			},
531*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
532*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
533*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
534*333d2b36SAndroid Build Coastguard Worker		}
535*333d2b36SAndroid Build Coastguard Worker	`)
536*333d2b36SAndroid Build Coastguard Worker
537*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "myexports", "",
538*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
539*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
540*333d2b36SAndroid Build Coastguard Worker
541*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
542*333d2b36SAndroid Build Coastguard Worker    name: "myexports.contributions",
543*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
544*333d2b36SAndroid Build Coastguard Worker}
545*333d2b36SAndroid Build Coastguard Worker
546*333d2b36SAndroid Build Coastguard Workerjava_import {
547*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
548*333d2b36SAndroid Build Coastguard Worker    prefer: false,
549*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
550*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
551*333d2b36SAndroid Build Coastguard Worker    device_supported: false,
552*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
553*333d2b36SAndroid Build Coastguard Worker    jars: ["java/myjavalib.jar"],
554*333d2b36SAndroid Build Coastguard Worker}
555*333d2b36SAndroid Build Coastguard Worker`),
556*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
557*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/myjavalib.jar
558*333d2b36SAndroid Build Coastguard Workeraidl/foo/bar/Test.aidl -> aidl/aidl/foo/bar/Test.aidl
559*333d2b36SAndroid Build Coastguard Worker`),
560*333d2b36SAndroid Build Coastguard Worker	)
561*333d2b36SAndroid Build Coastguard Worker}
562*333d2b36SAndroid Build Coastguard Worker
563*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaTest(t *testing.T) {
564*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
565*333d2b36SAndroid Build Coastguard Worker		module_exports {
566*333d2b36SAndroid Build Coastguard Worker			name: "myexports",
567*333d2b36SAndroid Build Coastguard Worker			java_tests: ["myjavatests"],
568*333d2b36SAndroid Build Coastguard Worker		}
569*333d2b36SAndroid Build Coastguard Worker
570*333d2b36SAndroid Build Coastguard Worker		java_test {
571*333d2b36SAndroid Build Coastguard Worker			name: "myjavatests",
572*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
573*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
574*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
575*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
576*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
577*333d2b36SAndroid Build Coastguard Worker		}
578*333d2b36SAndroid Build Coastguard Worker	`)
579*333d2b36SAndroid Build Coastguard Worker
580*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "myexports", "",
581*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
582*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
583*333d2b36SAndroid Build Coastguard Worker
584*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
585*333d2b36SAndroid Build Coastguard Worker    name: "myexports.contributions",
586*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavatests"],
587*333d2b36SAndroid Build Coastguard Worker}
588*333d2b36SAndroid Build Coastguard Worker
589*333d2b36SAndroid Build Coastguard Workerjava_test_import {
590*333d2b36SAndroid Build Coastguard Worker    name: "myjavatests",
591*333d2b36SAndroid Build Coastguard Worker    prefer: false,
592*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
593*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
594*333d2b36SAndroid Build Coastguard Worker    jars: ["java/myjavatests.jar"],
595*333d2b36SAndroid Build Coastguard Worker    test_config: "java/myjavatests-AndroidTest.xml",
596*333d2b36SAndroid Build Coastguard Worker}
597*333d2b36SAndroid Build Coastguard Worker`),
598*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
599*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavatests/android_common/javac/myjavatests.jar -> java/myjavatests.jar
600*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavatests/android_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
601*333d2b36SAndroid Build Coastguard Worker`),
602*333d2b36SAndroid Build Coastguard Worker	)
603*333d2b36SAndroid Build Coastguard Worker}
604*333d2b36SAndroid Build Coastguard Worker
605*333d2b36SAndroid Build Coastguard Workerfunc TestHostSnapshotWithJavaTest(t *testing.T) {
606*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
607*333d2b36SAndroid Build Coastguard Worker		module_exports {
608*333d2b36SAndroid Build Coastguard Worker			name: "myexports",
609*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
610*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
611*333d2b36SAndroid Build Coastguard Worker			java_tests: ["myjavatests"],
612*333d2b36SAndroid Build Coastguard Worker		}
613*333d2b36SAndroid Build Coastguard Worker
614*333d2b36SAndroid Build Coastguard Worker		java_test {
615*333d2b36SAndroid Build Coastguard Worker			name: "myjavatests",
616*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
617*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
618*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
619*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
620*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
621*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
622*333d2b36SAndroid Build Coastguard Worker		}
623*333d2b36SAndroid Build Coastguard Worker	`)
624*333d2b36SAndroid Build Coastguard Worker
625*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "myexports", "",
626*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
627*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
628*333d2b36SAndroid Build Coastguard Worker
629*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
630*333d2b36SAndroid Build Coastguard Worker    name: "myexports.contributions",
631*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavatests"],
632*333d2b36SAndroid Build Coastguard Worker}
633*333d2b36SAndroid Build Coastguard Worker
634*333d2b36SAndroid Build Coastguard Workerjava_test_import {
635*333d2b36SAndroid Build Coastguard Worker    name: "myjavatests",
636*333d2b36SAndroid Build Coastguard Worker    prefer: false,
637*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
638*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
639*333d2b36SAndroid Build Coastguard Worker    device_supported: false,
640*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
641*333d2b36SAndroid Build Coastguard Worker    jars: ["java/myjavatests.jar"],
642*333d2b36SAndroid Build Coastguard Worker    test_config: "java/myjavatests-AndroidTest.xml",
643*333d2b36SAndroid Build Coastguard Worker}
644*333d2b36SAndroid Build Coastguard Worker`),
645*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
646*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavatests/linux_glibc_common/javac/myjavatests.jar -> java/myjavatests.jar
647*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavatests/linux_glibc_common/myjavatests.config -> java/myjavatests-AndroidTest.xml
648*333d2b36SAndroid Build Coastguard Worker`),
649*333d2b36SAndroid Build Coastguard Worker	)
650*333d2b36SAndroid Build Coastguard Worker}
651*333d2b36SAndroid Build Coastguard Worker
652*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSystemModules(t *testing.T) {
653*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
654*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJava,
655*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaDefaultModules,
656*333d2b36SAndroid Build Coastguard Worker		java.PrepareForTestWithJavaSdkLibraryFiles,
657*333d2b36SAndroid Build Coastguard Worker		java.FixtureWithPrebuiltApisAndExtensions(map[string][]string{
658*333d2b36SAndroid Build Coastguard Worker			"31":      {"myjavalib"},
659*333d2b36SAndroid Build Coastguard Worker			"32":      {"myjavalib"},
660*333d2b36SAndroid Build Coastguard Worker			"current": {"myjavalib"},
661*333d2b36SAndroid Build Coastguard Worker		}, map[string][]string{
662*333d2b36SAndroid Build Coastguard Worker			"1": {"myjavalib"},
663*333d2b36SAndroid Build Coastguard Worker			"2": {"myjavalib"},
664*333d2b36SAndroid Build Coastguard Worker		}),
665*333d2b36SAndroid Build Coastguard Worker		android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"),
666*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
667*333d2b36SAndroid Build Coastguard Worker		sdk {
668*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
669*333d2b36SAndroid Build Coastguard Worker			java_header_libs: ["exported-system-module"],
670*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
671*333d2b36SAndroid Build Coastguard Worker			java_system_modules: ["my-system-modules"],
672*333d2b36SAndroid Build Coastguard Worker		}
673*333d2b36SAndroid Build Coastguard Worker
674*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
675*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
676*333d2b36SAndroid Build Coastguard Worker			apex_available: ["//apex_available:anyapex"],
677*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
678*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
679*333d2b36SAndroid Build Coastguard Worker			shared_library: false,
680*333d2b36SAndroid Build Coastguard Worker			public: {
681*333d2b36SAndroid Build Coastguard Worker				enabled: true,
682*333d2b36SAndroid Build Coastguard Worker			},
683*333d2b36SAndroid Build Coastguard Worker			system: {
684*333d2b36SAndroid Build Coastguard Worker				enabled: true,
685*333d2b36SAndroid Build Coastguard Worker			},
686*333d2b36SAndroid Build Coastguard Worker			module_lib: {
687*333d2b36SAndroid Build Coastguard Worker				enabled: true,
688*333d2b36SAndroid Build Coastguard Worker			},
689*333d2b36SAndroid Build Coastguard Worker		}
690*333d2b36SAndroid Build Coastguard Worker
691*333d2b36SAndroid Build Coastguard Worker		java_system_modules {
692*333d2b36SAndroid Build Coastguard Worker			name: "my-system-modules",
693*333d2b36SAndroid Build Coastguard Worker			libs: ["system-module", "exported-system-module", "myjavalib.stubs"],
694*333d2b36SAndroid Build Coastguard Worker		}
695*333d2b36SAndroid Build Coastguard Worker
696*333d2b36SAndroid Build Coastguard Worker		java_library {
697*333d2b36SAndroid Build Coastguard Worker			name: "system-module",
698*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
699*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
700*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
701*333d2b36SAndroid Build Coastguard Worker		}
702*333d2b36SAndroid Build Coastguard Worker
703*333d2b36SAndroid Build Coastguard Worker		java_library {
704*333d2b36SAndroid Build Coastguard Worker			name: "exported-system-module",
705*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
706*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
707*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
708*333d2b36SAndroid Build Coastguard Worker		}
709*333d2b36SAndroid Build Coastguard Worker	`)
710*333d2b36SAndroid Build Coastguard Worker
711*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
712*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
713*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
714*333d2b36SAndroid Build Coastguard Worker
715*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
716*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
717*333d2b36SAndroid Build Coastguard Worker    contents: [
718*333d2b36SAndroid Build Coastguard Worker        "prebuilt_exported-system-module",
719*333d2b36SAndroid Build Coastguard Worker        "prebuilt_myjavalib",
720*333d2b36SAndroid Build Coastguard Worker        "prebuilt_my-system-modules",
721*333d2b36SAndroid Build Coastguard Worker    ],
722*333d2b36SAndroid Build Coastguard Worker}
723*333d2b36SAndroid Build Coastguard Worker
724*333d2b36SAndroid Build Coastguard Workerjava_import {
725*333d2b36SAndroid Build Coastguard Worker    name: "exported-system-module",
726*333d2b36SAndroid Build Coastguard Worker    prefer: false,
727*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
728*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
729*333d2b36SAndroid Build Coastguard Worker    jars: ["java/exported-system-module.jar"],
730*333d2b36SAndroid Build Coastguard Worker}
731*333d2b36SAndroid Build Coastguard Worker
732*333d2b36SAndroid Build Coastguard Workerjava_import {
733*333d2b36SAndroid Build Coastguard Worker    name: "mysdk_system-module",
734*333d2b36SAndroid Build Coastguard Worker    prefer: false,
735*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:private"],
736*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
737*333d2b36SAndroid Build Coastguard Worker    jars: ["java/system-module.jar"],
738*333d2b36SAndroid Build Coastguard Worker}
739*333d2b36SAndroid Build Coastguard Worker
740*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
741*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
742*333d2b36SAndroid Build Coastguard Worker    prefer: false,
743*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
744*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:anyapex"],
745*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
746*333d2b36SAndroid Build Coastguard Worker    public: {
747*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
748*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
749*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
750*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
751*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
752*333d2b36SAndroid Build Coastguard Worker    },
753*333d2b36SAndroid Build Coastguard Worker    system: {
754*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/system/myjavalib-stubs.jar"],
755*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
756*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/system/myjavalib.txt",
757*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/system/myjavalib-removed.txt",
758*333d2b36SAndroid Build Coastguard Worker        sdk_version: "system_current",
759*333d2b36SAndroid Build Coastguard Worker    },
760*333d2b36SAndroid Build Coastguard Worker    module_lib: {
761*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
762*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
763*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/module-lib/myjavalib.txt",
764*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
765*333d2b36SAndroid Build Coastguard Worker        sdk_version: "module_current",
766*333d2b36SAndroid Build Coastguard Worker    },
767*333d2b36SAndroid Build Coastguard Worker}
768*333d2b36SAndroid Build Coastguard Worker
769*333d2b36SAndroid Build Coastguard Workerjava_system_modules_import {
770*333d2b36SAndroid Build Coastguard Worker    name: "my-system-modules",
771*333d2b36SAndroid Build Coastguard Worker    prefer: false,
772*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
773*333d2b36SAndroid Build Coastguard Worker    libs: [
774*333d2b36SAndroid Build Coastguard Worker        "mysdk_system-module",
775*333d2b36SAndroid Build Coastguard Worker        "exported-system-module",
776*333d2b36SAndroid Build Coastguard Worker        "myjavalib.stubs",
777*333d2b36SAndroid Build Coastguard Worker    ],
778*333d2b36SAndroid Build Coastguard Worker}
779*333d2b36SAndroid Build Coastguard Worker`),
780*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
781*333d2b36SAndroid Build Coastguard Worker.intermediates/exported-system-module/android_common/turbine-combined/exported-system-module.jar -> java/exported-system-module.jar
782*333d2b36SAndroid Build Coastguard Worker.intermediates/system-module/android_common/turbine-combined/system-module.jar -> java/system-module.jar
783*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
784*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
785*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
786*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.system/android_common/combined/myjavalib.stubs.exportable.system.jar -> sdk_library/system/myjavalib-stubs.jar
787*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
788*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
789*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.module_lib/android_common/combined/myjavalib.stubs.exportable.module_lib.jar -> sdk_library/module-lib/myjavalib-stubs.jar
790*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.module_lib/android_common/exportable/myjavalib.stubs.source.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt
791*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.module_lib/android_common/exportable/myjavalib.stubs.source.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt
792*333d2b36SAndroid Build Coastguard Worker`),
793*333d2b36SAndroid Build Coastguard Worker		checkInfoContents(result.Config, `
794*333d2b36SAndroid Build Coastguard Worker[
795*333d2b36SAndroid Build Coastguard Worker  {
796*333d2b36SAndroid Build Coastguard Worker    "@type": "sdk",
797*333d2b36SAndroid Build Coastguard Worker    "@name": "mysdk",
798*333d2b36SAndroid Build Coastguard Worker    "java_header_libs": [
799*333d2b36SAndroid Build Coastguard Worker      "exported-system-module",
800*333d2b36SAndroid Build Coastguard Worker      "system-module"
801*333d2b36SAndroid Build Coastguard Worker    ],
802*333d2b36SAndroid Build Coastguard Worker    "java_sdk_libs": [
803*333d2b36SAndroid Build Coastguard Worker      "myjavalib"
804*333d2b36SAndroid Build Coastguard Worker    ],
805*333d2b36SAndroid Build Coastguard Worker    "java_system_modules": [
806*333d2b36SAndroid Build Coastguard Worker      "my-system-modules"
807*333d2b36SAndroid Build Coastguard Worker    ]
808*333d2b36SAndroid Build Coastguard Worker  },
809*333d2b36SAndroid Build Coastguard Worker  {
810*333d2b36SAndroid Build Coastguard Worker    "@type": "java_library",
811*333d2b36SAndroid Build Coastguard Worker    "@name": "exported-system-module"
812*333d2b36SAndroid Build Coastguard Worker  },
813*333d2b36SAndroid Build Coastguard Worker  {
814*333d2b36SAndroid Build Coastguard Worker    "@type": "java_system_modules",
815*333d2b36SAndroid Build Coastguard Worker    "@name": "my-system-modules",
816*333d2b36SAndroid Build Coastguard Worker    "@deps": [
817*333d2b36SAndroid Build Coastguard Worker      "exported-system-module",
818*333d2b36SAndroid Build Coastguard Worker      "system-module"
819*333d2b36SAndroid Build Coastguard Worker    ]
820*333d2b36SAndroid Build Coastguard Worker  },
821*333d2b36SAndroid Build Coastguard Worker  {
822*333d2b36SAndroid Build Coastguard Worker    "@type": "java_sdk_library",
823*333d2b36SAndroid Build Coastguard Worker    "@name": "myjavalib",
824*333d2b36SAndroid Build Coastguard Worker    "dist_stem": "myjavalib",
825*333d2b36SAndroid Build Coastguard Worker    "scopes": {
826*333d2b36SAndroid Build Coastguard Worker      "module-lib": {
827*333d2b36SAndroid Build Coastguard Worker        "current_api": "sdk_library/module-lib/myjavalib.txt",
828*333d2b36SAndroid Build Coastguard Worker        "latest_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib.api.module-lib.latest/gen/myjavalib.api.module-lib.latest",
829*333d2b36SAndroid Build Coastguard Worker        "latest_removed_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib-removed.api.module-lib.latest/gen/myjavalib-removed.api.module-lib.latest",
830*333d2b36SAndroid Build Coastguard Worker        "removed_api": "sdk_library/module-lib/myjavalib-removed.txt"
831*333d2b36SAndroid Build Coastguard Worker      },
832*333d2b36SAndroid Build Coastguard Worker      "public": {
833*333d2b36SAndroid Build Coastguard Worker        "current_api": "sdk_library/public/myjavalib.txt",
834*333d2b36SAndroid Build Coastguard Worker        "latest_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib.api.public.latest/gen/myjavalib.api.public.latest",
835*333d2b36SAndroid Build Coastguard Worker        "latest_removed_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib-removed.api.public.latest/gen/myjavalib-removed.api.public.latest",
836*333d2b36SAndroid Build Coastguard Worker        "removed_api": "sdk_library/public/myjavalib-removed.txt"
837*333d2b36SAndroid Build Coastguard Worker      },
838*333d2b36SAndroid Build Coastguard Worker      "system": {
839*333d2b36SAndroid Build Coastguard Worker        "current_api": "sdk_library/system/myjavalib.txt",
840*333d2b36SAndroid Build Coastguard Worker        "latest_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib.api.system.latest/gen/myjavalib.api.system.latest",
841*333d2b36SAndroid Build Coastguard Worker        "latest_removed_api": "out/soong/.intermediates/prebuilts/sdk/myjavalib-removed.api.system.latest/gen/myjavalib-removed.api.system.latest",
842*333d2b36SAndroid Build Coastguard Worker        "removed_api": "sdk_library/system/myjavalib-removed.txt"
843*333d2b36SAndroid Build Coastguard Worker      }
844*333d2b36SAndroid Build Coastguard Worker    }
845*333d2b36SAndroid Build Coastguard Worker  },
846*333d2b36SAndroid Build Coastguard Worker  {
847*333d2b36SAndroid Build Coastguard Worker    "@type": "java_library",
848*333d2b36SAndroid Build Coastguard Worker    "@name": "system-module"
849*333d2b36SAndroid Build Coastguard Worker  }
850*333d2b36SAndroid Build Coastguard Worker]
851*333d2b36SAndroid Build Coastguard Worker`),
852*333d2b36SAndroid Build Coastguard Worker	)
853*333d2b36SAndroid Build Coastguard Worker}
854*333d2b36SAndroid Build Coastguard Worker
855*333d2b36SAndroid Build Coastguard Workerfunc TestHostSnapshotWithJavaSystemModules(t *testing.T) {
856*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
857*333d2b36SAndroid Build Coastguard Worker		sdk {
858*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
859*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
860*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
861*333d2b36SAndroid Build Coastguard Worker			java_system_modules: ["my-system-modules"],
862*333d2b36SAndroid Build Coastguard Worker		}
863*333d2b36SAndroid Build Coastguard Worker
864*333d2b36SAndroid Build Coastguard Worker		java_system_modules {
865*333d2b36SAndroid Build Coastguard Worker			name: "my-system-modules",
866*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
867*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
868*333d2b36SAndroid Build Coastguard Worker			libs: ["system-module"],
869*333d2b36SAndroid Build Coastguard Worker		}
870*333d2b36SAndroid Build Coastguard Worker
871*333d2b36SAndroid Build Coastguard Worker		java_library {
872*333d2b36SAndroid Build Coastguard Worker			name: "system-module",
873*333d2b36SAndroid Build Coastguard Worker			device_supported: false,
874*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
875*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
876*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
877*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
878*333d2b36SAndroid Build Coastguard Worker		}
879*333d2b36SAndroid Build Coastguard Worker	`)
880*333d2b36SAndroid Build Coastguard Worker
881*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
882*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
883*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
884*333d2b36SAndroid Build Coastguard Worker
885*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
886*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
887*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_my-system-modules"],
888*333d2b36SAndroid Build Coastguard Worker}
889*333d2b36SAndroid Build Coastguard Worker
890*333d2b36SAndroid Build Coastguard Workerjava_import {
891*333d2b36SAndroid Build Coastguard Worker    name: "mysdk_system-module",
892*333d2b36SAndroid Build Coastguard Worker    prefer: false,
893*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:private"],
894*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
895*333d2b36SAndroid Build Coastguard Worker    device_supported: false,
896*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
897*333d2b36SAndroid Build Coastguard Worker    jars: ["java/system-module.jar"],
898*333d2b36SAndroid Build Coastguard Worker}
899*333d2b36SAndroid Build Coastguard Worker
900*333d2b36SAndroid Build Coastguard Workerjava_system_modules_import {
901*333d2b36SAndroid Build Coastguard Worker    name: "my-system-modules",
902*333d2b36SAndroid Build Coastguard Worker    prefer: false,
903*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
904*333d2b36SAndroid Build Coastguard Worker    device_supported: false,
905*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
906*333d2b36SAndroid Build Coastguard Worker    libs: ["mysdk_system-module"],
907*333d2b36SAndroid Build Coastguard Worker}
908*333d2b36SAndroid Build Coastguard Worker`),
909*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(".intermediates/system-module/linux_glibc_common/javac-header/system-module.jar -> java/system-module.jar"),
910*333d2b36SAndroid Build Coastguard Worker	)
911*333d2b36SAndroid Build Coastguard Worker}
912*333d2b36SAndroid Build Coastguard Worker
913*333d2b36SAndroid Build Coastguard Workerfunc TestDeviceAndHostSnapshotWithOsSpecificMembers(t *testing.T) {
914*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJava).RunTestWithBp(t, `
915*333d2b36SAndroid Build Coastguard Worker		module_exports {
916*333d2b36SAndroid Build Coastguard Worker			name: "myexports",
917*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
918*333d2b36SAndroid Build Coastguard Worker			java_libs: ["myjavalib"],
919*333d2b36SAndroid Build Coastguard Worker			target: {
920*333d2b36SAndroid Build Coastguard Worker				android: {
921*333d2b36SAndroid Build Coastguard Worker					java_header_libs: ["androidjavalib"],
922*333d2b36SAndroid Build Coastguard Worker				},
923*333d2b36SAndroid Build Coastguard Worker				host: {
924*333d2b36SAndroid Build Coastguard Worker					java_header_libs: ["hostjavalib"],
925*333d2b36SAndroid Build Coastguard Worker				},
926*333d2b36SAndroid Build Coastguard Worker			},
927*333d2b36SAndroid Build Coastguard Worker		}
928*333d2b36SAndroid Build Coastguard Worker
929*333d2b36SAndroid Build Coastguard Worker		java_library {
930*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
931*333d2b36SAndroid Build Coastguard Worker			host_supported: true,
932*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
933*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
934*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
935*333d2b36SAndroid Build Coastguard Worker		}
936*333d2b36SAndroid Build Coastguard Worker
937*333d2b36SAndroid Build Coastguard Worker		java_library {
938*333d2b36SAndroid Build Coastguard Worker			name: "androidjavalib",
939*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
940*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
941*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
942*333d2b36SAndroid Build Coastguard Worker		}
943*333d2b36SAndroid Build Coastguard Worker
944*333d2b36SAndroid Build Coastguard Worker		java_library_host {
945*333d2b36SAndroid Build Coastguard Worker			name: "hostjavalib",
946*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
947*333d2b36SAndroid Build Coastguard Worker		}
948*333d2b36SAndroid Build Coastguard Worker	`)
949*333d2b36SAndroid Build Coastguard Worker
950*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "myexports", "",
951*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
952*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
953*333d2b36SAndroid Build Coastguard Worker
954*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
955*333d2b36SAndroid Build Coastguard Worker    name: "myexports.contributions",
956*333d2b36SAndroid Build Coastguard Worker    contents: [
957*333d2b36SAndroid Build Coastguard Worker        "prebuilt_hostjavalib",
958*333d2b36SAndroid Build Coastguard Worker        "prebuilt_androidjavalib",
959*333d2b36SAndroid Build Coastguard Worker        "prebuilt_myjavalib",
960*333d2b36SAndroid Build Coastguard Worker    ],
961*333d2b36SAndroid Build Coastguard Worker}
962*333d2b36SAndroid Build Coastguard Worker
963*333d2b36SAndroid Build Coastguard Workerjava_import {
964*333d2b36SAndroid Build Coastguard Worker    name: "hostjavalib",
965*333d2b36SAndroid Build Coastguard Worker    prefer: false,
966*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
967*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
968*333d2b36SAndroid Build Coastguard Worker    device_supported: false,
969*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
970*333d2b36SAndroid Build Coastguard Worker    jars: ["java/hostjavalib.jar"],
971*333d2b36SAndroid Build Coastguard Worker}
972*333d2b36SAndroid Build Coastguard Worker
973*333d2b36SAndroid Build Coastguard Workerjava_import {
974*333d2b36SAndroid Build Coastguard Worker    name: "androidjavalib",
975*333d2b36SAndroid Build Coastguard Worker    prefer: false,
976*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
977*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
978*333d2b36SAndroid Build Coastguard Worker    jars: ["java/androidjavalib.jar"],
979*333d2b36SAndroid Build Coastguard Worker}
980*333d2b36SAndroid Build Coastguard Worker
981*333d2b36SAndroid Build Coastguard Workerjava_import {
982*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
983*333d2b36SAndroid Build Coastguard Worker    prefer: false,
984*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
985*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
986*333d2b36SAndroid Build Coastguard Worker    host_supported: true,
987*333d2b36SAndroid Build Coastguard Worker    target: {
988*333d2b36SAndroid Build Coastguard Worker        android: {
989*333d2b36SAndroid Build Coastguard Worker            jars: ["java/android/myjavalib.jar"],
990*333d2b36SAndroid Build Coastguard Worker        },
991*333d2b36SAndroid Build Coastguard Worker        linux_glibc: {
992*333d2b36SAndroid Build Coastguard Worker            jars: ["java/linux_glibc/myjavalib.jar"],
993*333d2b36SAndroid Build Coastguard Worker        },
994*333d2b36SAndroid Build Coastguard Worker    },
995*333d2b36SAndroid Build Coastguard Worker}
996*333d2b36SAndroid Build Coastguard Worker`),
997*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
998*333d2b36SAndroid Build Coastguard Worker.intermediates/hostjavalib/linux_glibc_common/javac-header/hostjavalib.jar -> java/hostjavalib.jar
999*333d2b36SAndroid Build Coastguard Worker.intermediates/androidjavalib/android_common/turbine-combined/androidjavalib.jar -> java/androidjavalib.jar
1000*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/android_common/javac/myjavalib.jar -> java/android/myjavalib.jar
1001*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib/linux_glibc_common/javac/myjavalib.jar -> java/linux_glibc/myjavalib.jar
1002*333d2b36SAndroid Build Coastguard Worker`),
1003*333d2b36SAndroid Build Coastguard Worker	)
1004*333d2b36SAndroid Build Coastguard Worker}
1005*333d2b36SAndroid Build Coastguard Worker
1006*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary(t *testing.T) {
1007*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1008*333d2b36SAndroid Build Coastguard Worker		sdk {
1009*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1010*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1011*333d2b36SAndroid Build Coastguard Worker		}
1012*333d2b36SAndroid Build Coastguard Worker
1013*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1014*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1015*333d2b36SAndroid Build Coastguard Worker			apex_available: ["//apex_available:anyapex"],
1016*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1017*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1018*333d2b36SAndroid Build Coastguard Worker			shared_library: false,
1019*333d2b36SAndroid Build Coastguard Worker			stubs_library_visibility: ["//other"],
1020*333d2b36SAndroid Build Coastguard Worker			stubs_source_visibility: ["//another"],
1021*333d2b36SAndroid Build Coastguard Worker			permitted_packages: ["pkg.myjavalib"],
1022*333d2b36SAndroid Build Coastguard Worker		}
1023*333d2b36SAndroid Build Coastguard Worker	`)
1024*333d2b36SAndroid Build Coastguard Worker
1025*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1026*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1027*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1028*333d2b36SAndroid Build Coastguard Worker
1029*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1030*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1031*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1032*333d2b36SAndroid Build Coastguard Worker}
1033*333d2b36SAndroid Build Coastguard Worker
1034*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1035*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1036*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1037*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1038*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:anyapex"],
1039*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
1040*333d2b36SAndroid Build Coastguard Worker    permitted_packages: ["pkg.myjavalib"],
1041*333d2b36SAndroid Build Coastguard Worker    public: {
1042*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1043*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1044*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1045*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1046*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1047*333d2b36SAndroid Build Coastguard Worker    },
1048*333d2b36SAndroid Build Coastguard Worker    system: {
1049*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/system/myjavalib-stubs.jar"],
1050*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1051*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/system/myjavalib.txt",
1052*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/system/myjavalib-removed.txt",
1053*333d2b36SAndroid Build Coastguard Worker        sdk_version: "system_current",
1054*333d2b36SAndroid Build Coastguard Worker    },
1055*333d2b36SAndroid Build Coastguard Worker    test: {
1056*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/test/myjavalib-stubs.jar"],
1057*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/test/myjavalib_stub_sources"],
1058*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/test/myjavalib.txt",
1059*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/test/myjavalib-removed.txt",
1060*333d2b36SAndroid Build Coastguard Worker        sdk_version: "test_current",
1061*333d2b36SAndroid Build Coastguard Worker    },
1062*333d2b36SAndroid Build Coastguard Worker}
1063*333d2b36SAndroid Build Coastguard Worker`),
1064*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1065*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1066*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1067*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1068*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.system/android_common/combined/myjavalib.stubs.exportable.system.jar -> sdk_library/system/myjavalib-stubs.jar
1069*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1070*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
1071*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.test/android_common/combined/myjavalib.stubs.exportable.test.jar -> sdk_library/test/myjavalib-stubs.jar
1072*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.test/android_common/exportable/myjavalib.stubs.source.test_api.txt -> sdk_library/test/myjavalib.txt
1073*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.test/android_common/exportable/myjavalib.stubs.source.test_removed.txt -> sdk_library/test/myjavalib-removed.txt
1074*333d2b36SAndroid Build Coastguard Worker`),
1075*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(
1076*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1077*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1078*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/test/myjavalib_stub_sources.zip",
1079*333d2b36SAndroid Build Coastguard Worker		),
1080*333d2b36SAndroid Build Coastguard Worker	)
1081*333d2b36SAndroid Build Coastguard Worker}
1082*333d2b36SAndroid Build Coastguard Worker
1083*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_DistStem(t *testing.T) {
1084*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1085*333d2b36SAndroid Build Coastguard Worker		sdk {
1086*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1087*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib-foo"],
1088*333d2b36SAndroid Build Coastguard Worker		}
1089*333d2b36SAndroid Build Coastguard Worker
1090*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1091*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib-foo",
1092*333d2b36SAndroid Build Coastguard Worker			apex_available: ["//apex_available:anyapex"],
1093*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1094*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1095*333d2b36SAndroid Build Coastguard Worker			shared_library: false,
1096*333d2b36SAndroid Build Coastguard Worker			public: {
1097*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1098*333d2b36SAndroid Build Coastguard Worker			},
1099*333d2b36SAndroid Build Coastguard Worker			dist_stem: "myjavalib",
1100*333d2b36SAndroid Build Coastguard Worker		}
1101*333d2b36SAndroid Build Coastguard Worker	`)
1102*333d2b36SAndroid Build Coastguard Worker
1103*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1104*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1105*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1106*333d2b36SAndroid Build Coastguard Worker
1107*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1108*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1109*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib-foo"],
1110*333d2b36SAndroid Build Coastguard Worker}
1111*333d2b36SAndroid Build Coastguard Worker
1112*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1113*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib-foo",
1114*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1115*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1116*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:anyapex"],
1117*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
1118*333d2b36SAndroid Build Coastguard Worker    public: {
1119*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1120*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1121*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1122*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1123*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1124*333d2b36SAndroid Build Coastguard Worker    },
1125*333d2b36SAndroid Build Coastguard Worker}
1126*333d2b36SAndroid Build Coastguard Worker`),
1127*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1128*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib-foo.stubs.exportable/android_common/combined/myjavalib-foo.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1129*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib-foo.stubs.source/android_common/exportable/myjavalib-foo.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1130*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib-foo.stubs.source/android_common/exportable/myjavalib-foo.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1131*333d2b36SAndroid Build Coastguard Worker`),
1132*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(
1133*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1134*333d2b36SAndroid Build Coastguard Worker		),
1135*333d2b36SAndroid Build Coastguard Worker	)
1136*333d2b36SAndroid Build Coastguard Worker}
1137*333d2b36SAndroid Build Coastguard Worker
1138*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_UseSrcJar(t *testing.T) {
1139*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
1140*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJavaSdkLibrary,
1141*333d2b36SAndroid Build Coastguard Worker		android.FixtureMergeEnv(map[string]string{
1142*333d2b36SAndroid Build Coastguard Worker			"SOONG_SDK_SNAPSHOT_USE_SRCJAR": "true",
1143*333d2b36SAndroid Build Coastguard Worker		}),
1144*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
1145*333d2b36SAndroid Build Coastguard Worker		sdk {
1146*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1147*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1148*333d2b36SAndroid Build Coastguard Worker		}
1149*333d2b36SAndroid Build Coastguard Worker
1150*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1151*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1152*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1153*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1154*333d2b36SAndroid Build Coastguard Worker			shared_library: false,
1155*333d2b36SAndroid Build Coastguard Worker			public: {
1156*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1157*333d2b36SAndroid Build Coastguard Worker			},
1158*333d2b36SAndroid Build Coastguard Worker		}
1159*333d2b36SAndroid Build Coastguard Worker	`)
1160*333d2b36SAndroid Build Coastguard Worker
1161*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1162*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1163*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1164*333d2b36SAndroid Build Coastguard Worker
1165*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1166*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1167*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1168*333d2b36SAndroid Build Coastguard Worker}
1169*333d2b36SAndroid Build Coastguard Worker
1170*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1171*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1172*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1173*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1174*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
1175*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
1176*333d2b36SAndroid Build Coastguard Worker    public: {
1177*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1178*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib.srcjar"],
1179*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1180*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1181*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1182*333d2b36SAndroid Build Coastguard Worker    },
1183*333d2b36SAndroid Build Coastguard Worker}
1184*333d2b36SAndroid Build Coastguard Worker		`),
1185*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1186*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1187*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source-stubs.srcjar -> sdk_library/public/myjavalib.srcjar
1188*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1189*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1190*333d2b36SAndroid Build Coastguard Worker		`),
1191*333d2b36SAndroid Build Coastguard Worker	)
1192*333d2b36SAndroid Build Coastguard Worker}
1193*333d2b36SAndroid Build Coastguard Worker
1194*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_AnnotationsZip(t *testing.T) {
1195*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1196*333d2b36SAndroid Build Coastguard Worker		sdk {
1197*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1198*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1199*333d2b36SAndroid Build Coastguard Worker		}
1200*333d2b36SAndroid Build Coastguard Worker
1201*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1202*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1203*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1204*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1205*333d2b36SAndroid Build Coastguard Worker			shared_library: false,
1206*333d2b36SAndroid Build Coastguard Worker			annotations_enabled: true,
1207*333d2b36SAndroid Build Coastguard Worker			public: {
1208*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1209*333d2b36SAndroid Build Coastguard Worker			},
1210*333d2b36SAndroid Build Coastguard Worker		}
1211*333d2b36SAndroid Build Coastguard Worker	`)
1212*333d2b36SAndroid Build Coastguard Worker
1213*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1214*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1215*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1216*333d2b36SAndroid Build Coastguard Worker
1217*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1218*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1219*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1220*333d2b36SAndroid Build Coastguard Worker}
1221*333d2b36SAndroid Build Coastguard Worker
1222*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1223*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1224*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1225*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1226*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
1227*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
1228*333d2b36SAndroid Build Coastguard Worker    public: {
1229*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1230*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1231*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1232*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1233*333d2b36SAndroid Build Coastguard Worker        annotations: "sdk_library/public/myjavalib_annotations.zip",
1234*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1235*333d2b36SAndroid Build Coastguard Worker    },
1236*333d2b36SAndroid Build Coastguard Worker}
1237*333d2b36SAndroid Build Coastguard Worker		`),
1238*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1239*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1240*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1241*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1242*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_annotations.zip -> sdk_library/public/myjavalib_annotations.zip
1243*333d2b36SAndroid Build Coastguard Worker		`),
1244*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1245*333d2b36SAndroid Build Coastguard Worker	)
1246*333d2b36SAndroid Build Coastguard Worker}
1247*333d2b36SAndroid Build Coastguard Worker
1248*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_AnnotationsZip_PreT(t *testing.T) {
1249*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
1250*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJavaSdkLibrary,
1251*333d2b36SAndroid Build Coastguard Worker		android.FixtureMergeEnv(map[string]string{
1252*333d2b36SAndroid Build Coastguard Worker			"SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S",
1253*333d2b36SAndroid Build Coastguard Worker		}),
1254*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
1255*333d2b36SAndroid Build Coastguard Worker		sdk {
1256*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1257*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1258*333d2b36SAndroid Build Coastguard Worker		}
1259*333d2b36SAndroid Build Coastguard Worker
1260*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1261*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1262*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1263*333d2b36SAndroid Build Coastguard Worker			sdk_version: "S",
1264*333d2b36SAndroid Build Coastguard Worker			shared_library: false,
1265*333d2b36SAndroid Build Coastguard Worker			annotations_enabled: true,
1266*333d2b36SAndroid Build Coastguard Worker			public: {
1267*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1268*333d2b36SAndroid Build Coastguard Worker			},
1269*333d2b36SAndroid Build Coastguard Worker		}
1270*333d2b36SAndroid Build Coastguard Worker	`)
1271*333d2b36SAndroid Build Coastguard Worker
1272*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1273*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1274*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1275*333d2b36SAndroid Build Coastguard Worker
1276*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1277*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1278*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1279*333d2b36SAndroid Build Coastguard Worker}
1280*333d2b36SAndroid Build Coastguard Worker
1281*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1282*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1283*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1284*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1285*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
1286*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
1287*333d2b36SAndroid Build Coastguard Worker    public: {
1288*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1289*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1290*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1291*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1292*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1293*333d2b36SAndroid Build Coastguard Worker    },
1294*333d2b36SAndroid Build Coastguard Worker}
1295*333d2b36SAndroid Build Coastguard Worker		`),
1296*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1297*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1298*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1299*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1300*333d2b36SAndroid Build Coastguard Worker		`),
1301*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip"),
1302*333d2b36SAndroid Build Coastguard Worker	)
1303*333d2b36SAndroid Build Coastguard Worker}
1304*333d2b36SAndroid Build Coastguard Worker
1305*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_CompileDex(t *testing.T) {
1306*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
1307*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJavaSdkLibrary,
1308*333d2b36SAndroid Build Coastguard Worker		android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"),
1309*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
1310*333d2b36SAndroid Build Coastguard Worker		sdk {
1311*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1312*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1313*333d2b36SAndroid Build Coastguard Worker		}
1314*333d2b36SAndroid Build Coastguard Worker
1315*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1316*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1317*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1318*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1319*333d2b36SAndroid Build Coastguard Worker			shared_library: false,
1320*333d2b36SAndroid Build Coastguard Worker			compile_dex: true,
1321*333d2b36SAndroid Build Coastguard Worker			public: {
1322*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1323*333d2b36SAndroid Build Coastguard Worker			},
1324*333d2b36SAndroid Build Coastguard Worker			system: {
1325*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1326*333d2b36SAndroid Build Coastguard Worker			},
1327*333d2b36SAndroid Build Coastguard Worker		}
1328*333d2b36SAndroid Build Coastguard Worker	`)
1329*333d2b36SAndroid Build Coastguard Worker
1330*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1331*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1332*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1333*333d2b36SAndroid Build Coastguard Worker
1334*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1335*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1336*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1337*333d2b36SAndroid Build Coastguard Worker}
1338*333d2b36SAndroid Build Coastguard Worker
1339*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1340*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1341*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1342*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1343*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
1344*333d2b36SAndroid Build Coastguard Worker    shared_library: false,
1345*333d2b36SAndroid Build Coastguard Worker    compile_dex: true,
1346*333d2b36SAndroid Build Coastguard Worker    public: {
1347*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1348*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1349*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1350*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1351*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1352*333d2b36SAndroid Build Coastguard Worker    },
1353*333d2b36SAndroid Build Coastguard Worker    system: {
1354*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/system/myjavalib-stubs.jar"],
1355*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1356*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/system/myjavalib.txt",
1357*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/system/myjavalib-removed.txt",
1358*333d2b36SAndroid Build Coastguard Worker        sdk_version: "system_current",
1359*333d2b36SAndroid Build Coastguard Worker    },
1360*333d2b36SAndroid Build Coastguard Worker}
1361*333d2b36SAndroid Build Coastguard Worker`),
1362*333d2b36SAndroid Build Coastguard Worker		snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) {
1363*333d2b36SAndroid Build Coastguard Worker			dexJarBuildPath := func(name string, kind android.SdkKind) string {
1364*333d2b36SAndroid Build Coastguard Worker				sdkLibInfo, _ := android.OtherModuleProvider(result.TestContext.OtherModuleProviderAdaptor(), result.Module(name, "android_common"), java.SdkLibraryInfoProvider)
1365*333d2b36SAndroid Build Coastguard Worker				path := sdkLibInfo.ExportableStubDexJarPaths[kind].Path()
1366*333d2b36SAndroid Build Coastguard Worker				return path.RelativeToTop().String()
1367*333d2b36SAndroid Build Coastguard Worker			}
1368*333d2b36SAndroid Build Coastguard Worker
1369*333d2b36SAndroid Build Coastguard Worker			dexJarPath := dexJarBuildPath("myjavalib", android.SdkPublic)
1370*333d2b36SAndroid Build Coastguard Worker			android.AssertStringEquals(t, "source dex public stubs jar build path", "out/soong/.intermediates/myjavalib.stubs.exportable/android_common/dex/myjavalib.stubs.exportable.jar", dexJarPath)
1371*333d2b36SAndroid Build Coastguard Worker
1372*333d2b36SAndroid Build Coastguard Worker			dexJarPath = dexJarBuildPath("myjavalib", android.SdkSystem)
1373*333d2b36SAndroid Build Coastguard Worker			systemDexJar := "out/soong/.intermediates/myjavalib.stubs.exportable.system/android_common/dex/myjavalib.stubs.exportable.system.jar"
1374*333d2b36SAndroid Build Coastguard Worker			android.AssertStringEquals(t, "source dex system stubs jar build path", systemDexJar, dexJarPath)
1375*333d2b36SAndroid Build Coastguard Worker
1376*333d2b36SAndroid Build Coastguard Worker			// This should fall back to system as module is not available.
1377*333d2b36SAndroid Build Coastguard Worker			dexJarPath = dexJarBuildPath("myjavalib", android.SdkModule)
1378*333d2b36SAndroid Build Coastguard Worker			android.AssertStringEquals(t, "source dex module stubs jar build path", systemDexJar, dexJarPath)
1379*333d2b36SAndroid Build Coastguard Worker
1380*333d2b36SAndroid Build Coastguard Worker			// Prebuilt dex jar does not come from the exportable stubs.
1381*333d2b36SAndroid Build Coastguard Worker			dexJarPath = dexJarBuildPath(android.PrebuiltNameFromSource("myjavalib"), android.SdkPublic)
1382*333d2b36SAndroid Build Coastguard Worker			android.AssertStringEquals(t, "prebuilt dex public stubs jar build path", "out/soong/.intermediates/snapshot/prebuilt_myjavalib.stubs/android_common/dex/myjavalib.stubs.jar", dexJarPath)
1383*333d2b36SAndroid Build Coastguard Worker		}),
1384*333d2b36SAndroid Build Coastguard Worker	)
1385*333d2b36SAndroid Build Coastguard Worker}
1386*333d2b36SAndroid Build Coastguard Worker
1387*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_SdkVersion_None(t *testing.T) {
1388*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1389*333d2b36SAndroid Build Coastguard Worker		sdk {
1390*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1391*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1392*333d2b36SAndroid Build Coastguard Worker		}
1393*333d2b36SAndroid Build Coastguard Worker
1394*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1395*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1396*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1397*333d2b36SAndroid Build Coastguard Worker			sdk_version: "none",
1398*333d2b36SAndroid Build Coastguard Worker			system_modules: "none",
1399*333d2b36SAndroid Build Coastguard Worker		}
1400*333d2b36SAndroid Build Coastguard Worker	`)
1401*333d2b36SAndroid Build Coastguard Worker
1402*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1403*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1404*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1405*333d2b36SAndroid Build Coastguard Worker
1406*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1407*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1408*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1409*333d2b36SAndroid Build Coastguard Worker}
1410*333d2b36SAndroid Build Coastguard Worker
1411*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1412*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1413*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1414*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1415*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
1416*333d2b36SAndroid Build Coastguard Worker    shared_library: true,
1417*333d2b36SAndroid Build Coastguard Worker    public: {
1418*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1419*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1420*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1421*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1422*333d2b36SAndroid Build Coastguard Worker        sdk_version: "none",
1423*333d2b36SAndroid Build Coastguard Worker    },
1424*333d2b36SAndroid Build Coastguard Worker}
1425*333d2b36SAndroid Build Coastguard Worker`),
1426*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1427*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1428*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1429*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1430*333d2b36SAndroid Build Coastguard Worker`),
1431*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(
1432*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1433*333d2b36SAndroid Build Coastguard Worker		),
1434*333d2b36SAndroid Build Coastguard Worker	)
1435*333d2b36SAndroid Build Coastguard Worker}
1436*333d2b36SAndroid Build Coastguard Worker
1437*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_SdkVersion_ForScope(t *testing.T) {
1438*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1439*333d2b36SAndroid Build Coastguard Worker		sdk {
1440*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1441*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1442*333d2b36SAndroid Build Coastguard Worker		}
1443*333d2b36SAndroid Build Coastguard Worker
1444*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1445*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1446*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1447*333d2b36SAndroid Build Coastguard Worker			sdk_version: "module_current",
1448*333d2b36SAndroid Build Coastguard Worker			public: {
1449*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1450*333d2b36SAndroid Build Coastguard Worker				sdk_version: "module_current",
1451*333d2b36SAndroid Build Coastguard Worker			},
1452*333d2b36SAndroid Build Coastguard Worker		}
1453*333d2b36SAndroid Build Coastguard Worker	`)
1454*333d2b36SAndroid Build Coastguard Worker
1455*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1456*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1457*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1458*333d2b36SAndroid Build Coastguard Worker
1459*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1460*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1461*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1462*333d2b36SAndroid Build Coastguard Worker}
1463*333d2b36SAndroid Build Coastguard Worker
1464*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1465*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1466*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1467*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1468*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
1469*333d2b36SAndroid Build Coastguard Worker    shared_library: true,
1470*333d2b36SAndroid Build Coastguard Worker    public: {
1471*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1472*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1473*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1474*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1475*333d2b36SAndroid Build Coastguard Worker        sdk_version: "module_current",
1476*333d2b36SAndroid Build Coastguard Worker    },
1477*333d2b36SAndroid Build Coastguard Worker}
1478*333d2b36SAndroid Build Coastguard Worker`),
1479*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1480*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1481*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1482*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1483*333d2b36SAndroid Build Coastguard Worker`),
1484*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(
1485*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1486*333d2b36SAndroid Build Coastguard Worker		),
1487*333d2b36SAndroid Build Coastguard Worker	)
1488*333d2b36SAndroid Build Coastguard Worker}
1489*333d2b36SAndroid Build Coastguard Worker
1490*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_ApiScopes(t *testing.T) {
1491*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1492*333d2b36SAndroid Build Coastguard Worker		sdk {
1493*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1494*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1495*333d2b36SAndroid Build Coastguard Worker		}
1496*333d2b36SAndroid Build Coastguard Worker
1497*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1498*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1499*333d2b36SAndroid Build Coastguard Worker			apex_available: ["//apex_available:anyapex"],
1500*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1501*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1502*333d2b36SAndroid Build Coastguard Worker			public: {
1503*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1504*333d2b36SAndroid Build Coastguard Worker			},
1505*333d2b36SAndroid Build Coastguard Worker			system: {
1506*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1507*333d2b36SAndroid Build Coastguard Worker			},
1508*333d2b36SAndroid Build Coastguard Worker		}
1509*333d2b36SAndroid Build Coastguard Worker	`)
1510*333d2b36SAndroid Build Coastguard Worker
1511*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1512*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1513*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1514*333d2b36SAndroid Build Coastguard Worker
1515*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1516*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1517*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1518*333d2b36SAndroid Build Coastguard Worker}
1519*333d2b36SAndroid Build Coastguard Worker
1520*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1521*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1522*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1523*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1524*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:anyapex"],
1525*333d2b36SAndroid Build Coastguard Worker    shared_library: true,
1526*333d2b36SAndroid Build Coastguard Worker    public: {
1527*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1528*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1529*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1530*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1531*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1532*333d2b36SAndroid Build Coastguard Worker    },
1533*333d2b36SAndroid Build Coastguard Worker    system: {
1534*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/system/myjavalib-stubs.jar"],
1535*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1536*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/system/myjavalib.txt",
1537*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/system/myjavalib-removed.txt",
1538*333d2b36SAndroid Build Coastguard Worker        sdk_version: "system_current",
1539*333d2b36SAndroid Build Coastguard Worker    },
1540*333d2b36SAndroid Build Coastguard Worker}
1541*333d2b36SAndroid Build Coastguard Worker`),
1542*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1543*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1544*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1545*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1546*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.system/android_common/combined/myjavalib.stubs.exportable.system.jar -> sdk_library/system/myjavalib-stubs.jar
1547*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1548*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
1549*333d2b36SAndroid Build Coastguard Worker`),
1550*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(
1551*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1552*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1553*333d2b36SAndroid Build Coastguard Worker		),
1554*333d2b36SAndroid Build Coastguard Worker	)
1555*333d2b36SAndroid Build Coastguard Worker}
1556*333d2b36SAndroid Build Coastguard Worker
1557*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_ModuleLib(t *testing.T) {
1558*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1559*333d2b36SAndroid Build Coastguard Worker		sdk {
1560*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1561*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1562*333d2b36SAndroid Build Coastguard Worker		}
1563*333d2b36SAndroid Build Coastguard Worker
1564*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1565*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1566*333d2b36SAndroid Build Coastguard Worker			apex_available: ["//apex_available:anyapex"],
1567*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1568*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1569*333d2b36SAndroid Build Coastguard Worker			public: {
1570*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1571*333d2b36SAndroid Build Coastguard Worker			},
1572*333d2b36SAndroid Build Coastguard Worker			system: {
1573*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1574*333d2b36SAndroid Build Coastguard Worker			},
1575*333d2b36SAndroid Build Coastguard Worker			module_lib: {
1576*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1577*333d2b36SAndroid Build Coastguard Worker			},
1578*333d2b36SAndroid Build Coastguard Worker		}
1579*333d2b36SAndroid Build Coastguard Worker	`)
1580*333d2b36SAndroid Build Coastguard Worker
1581*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1582*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1583*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1584*333d2b36SAndroid Build Coastguard Worker
1585*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1586*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1587*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1588*333d2b36SAndroid Build Coastguard Worker}
1589*333d2b36SAndroid Build Coastguard Worker
1590*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1591*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1592*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1593*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1594*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:anyapex"],
1595*333d2b36SAndroid Build Coastguard Worker    shared_library: true,
1596*333d2b36SAndroid Build Coastguard Worker    public: {
1597*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1598*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1599*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1600*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1601*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1602*333d2b36SAndroid Build Coastguard Worker    },
1603*333d2b36SAndroid Build Coastguard Worker    system: {
1604*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/system/myjavalib-stubs.jar"],
1605*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/system/myjavalib_stub_sources"],
1606*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/system/myjavalib.txt",
1607*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/system/myjavalib-removed.txt",
1608*333d2b36SAndroid Build Coastguard Worker        sdk_version: "system_current",
1609*333d2b36SAndroid Build Coastguard Worker    },
1610*333d2b36SAndroid Build Coastguard Worker    module_lib: {
1611*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/module-lib/myjavalib-stubs.jar"],
1612*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/module-lib/myjavalib_stub_sources"],
1613*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/module-lib/myjavalib.txt",
1614*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/module-lib/myjavalib-removed.txt",
1615*333d2b36SAndroid Build Coastguard Worker        sdk_version: "module_current",
1616*333d2b36SAndroid Build Coastguard Worker    },
1617*333d2b36SAndroid Build Coastguard Worker}
1618*333d2b36SAndroid Build Coastguard Worker`),
1619*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1620*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1621*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1622*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1623*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.system/android_common/combined/myjavalib.stubs.exportable.system.jar -> sdk_library/system/myjavalib-stubs.jar
1624*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_api.txt -> sdk_library/system/myjavalib.txt
1625*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system/android_common/exportable/myjavalib.stubs.source.system_removed.txt -> sdk_library/system/myjavalib-removed.txt
1626*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.module_lib/android_common/combined/myjavalib.stubs.exportable.module_lib.jar -> sdk_library/module-lib/myjavalib-stubs.jar
1627*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.module_lib/android_common/exportable/myjavalib.stubs.source.module_lib_api.txt -> sdk_library/module-lib/myjavalib.txt
1628*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.module_lib/android_common/exportable/myjavalib.stubs.source.module_lib_removed.txt -> sdk_library/module-lib/myjavalib-removed.txt
1629*333d2b36SAndroid Build Coastguard Worker`),
1630*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(
1631*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/module-lib/myjavalib_stub_sources.zip",
1632*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1633*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/system/myjavalib_stub_sources.zip",
1634*333d2b36SAndroid Build Coastguard Worker		),
1635*333d2b36SAndroid Build Coastguard Worker	)
1636*333d2b36SAndroid Build Coastguard Worker}
1637*333d2b36SAndroid Build Coastguard Worker
1638*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_SystemServer(t *testing.T) {
1639*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(prepareForSdkTestWithJavaSdkLibrary).RunTestWithBp(t, `
1640*333d2b36SAndroid Build Coastguard Worker		sdk {
1641*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1642*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1643*333d2b36SAndroid Build Coastguard Worker		}
1644*333d2b36SAndroid Build Coastguard Worker
1645*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1646*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1647*333d2b36SAndroid Build Coastguard Worker			apex_available: ["//apex_available:anyapex"],
1648*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1649*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1650*333d2b36SAndroid Build Coastguard Worker			public: {
1651*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1652*333d2b36SAndroid Build Coastguard Worker			},
1653*333d2b36SAndroid Build Coastguard Worker			system_server: {
1654*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1655*333d2b36SAndroid Build Coastguard Worker			},
1656*333d2b36SAndroid Build Coastguard Worker		}
1657*333d2b36SAndroid Build Coastguard Worker	`)
1658*333d2b36SAndroid Build Coastguard Worker
1659*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1660*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1661*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1662*333d2b36SAndroid Build Coastguard Worker
1663*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1664*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1665*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1666*333d2b36SAndroid Build Coastguard Worker}
1667*333d2b36SAndroid Build Coastguard Worker
1668*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1669*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1670*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1671*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1672*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:anyapex"],
1673*333d2b36SAndroid Build Coastguard Worker    shared_library: true,
1674*333d2b36SAndroid Build Coastguard Worker    public: {
1675*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1676*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1677*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1678*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1679*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1680*333d2b36SAndroid Build Coastguard Worker    },
1681*333d2b36SAndroid Build Coastguard Worker    system_server: {
1682*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/system-server/myjavalib-stubs.jar"],
1683*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/system-server/myjavalib_stub_sources"],
1684*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/system-server/myjavalib.txt",
1685*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/system-server/myjavalib-removed.txt",
1686*333d2b36SAndroid Build Coastguard Worker        sdk_version: "system_server_current",
1687*333d2b36SAndroid Build Coastguard Worker    },
1688*333d2b36SAndroid Build Coastguard Worker}
1689*333d2b36SAndroid Build Coastguard Worker`),
1690*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1691*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1692*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1693*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1694*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable.system_server/android_common/combined/myjavalib.stubs.exportable.system_server.jar -> sdk_library/system-server/myjavalib-stubs.jar
1695*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system_server/android_common/exportable/myjavalib.stubs.source.system_server_api.txt -> sdk_library/system-server/myjavalib.txt
1696*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source.system_server/android_common/exportable/myjavalib.stubs.source.system_server_removed.txt -> sdk_library/system-server/myjavalib-removed.txt
1697*333d2b36SAndroid Build Coastguard Worker`),
1698*333d2b36SAndroid Build Coastguard Worker		checkMergeZips(
1699*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/public/myjavalib_stub_sources.zip",
1700*333d2b36SAndroid Build Coastguard Worker			".intermediates/mysdk/common_os/tmp/sdk_library/system-server/myjavalib_stub_sources.zip",
1701*333d2b36SAndroid Build Coastguard Worker		),
1702*333d2b36SAndroid Build Coastguard Worker	)
1703*333d2b36SAndroid Build Coastguard Worker}
1704*333d2b36SAndroid Build Coastguard Worker
1705*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithJavaSdkLibrary_DoctagFiles(t *testing.T) {
1706*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
1707*333d2b36SAndroid Build Coastguard Worker		prepareForSdkTestWithJavaSdkLibrary,
1708*333d2b36SAndroid Build Coastguard Worker		android.FixtureAddFile("docs/known_doctags", nil),
1709*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
1710*333d2b36SAndroid Build Coastguard Worker		sdk {
1711*333d2b36SAndroid Build Coastguard Worker			name: "mysdk",
1712*333d2b36SAndroid Build Coastguard Worker			java_sdk_libs: ["myjavalib"],
1713*333d2b36SAndroid Build Coastguard Worker		}
1714*333d2b36SAndroid Build Coastguard Worker
1715*333d2b36SAndroid Build Coastguard Worker		java_sdk_library {
1716*333d2b36SAndroid Build Coastguard Worker			name: "myjavalib",
1717*333d2b36SAndroid Build Coastguard Worker			srcs: ["Test.java"],
1718*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
1719*333d2b36SAndroid Build Coastguard Worker			public: {
1720*333d2b36SAndroid Build Coastguard Worker				enabled: true,
1721*333d2b36SAndroid Build Coastguard Worker			},
1722*333d2b36SAndroid Build Coastguard Worker			doctag_files: ["docs/known_doctags"],
1723*333d2b36SAndroid Build Coastguard Worker		}
1724*333d2b36SAndroid Build Coastguard Worker
1725*333d2b36SAndroid Build Coastguard Worker		filegroup {
1726*333d2b36SAndroid Build Coastguard Worker			name: "mygroup",
1727*333d2b36SAndroid Build Coastguard Worker			device_common_srcs: [":myjavalib{.doctags}"],
1728*333d2b36SAndroid Build Coastguard Worker		}
1729*333d2b36SAndroid Build Coastguard Worker	`)
1730*333d2b36SAndroid Build Coastguard Worker
1731*333d2b36SAndroid Build Coastguard Worker	CheckSnapshot(t, result, "mysdk", "",
1732*333d2b36SAndroid Build Coastguard Worker		checkAndroidBpContents(`
1733*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT.
1734*333d2b36SAndroid Build Coastguard Worker
1735*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults {
1736*333d2b36SAndroid Build Coastguard Worker    name: "mysdk.contributions",
1737*333d2b36SAndroid Build Coastguard Worker    contents: ["prebuilt_myjavalib"],
1738*333d2b36SAndroid Build Coastguard Worker}
1739*333d2b36SAndroid Build Coastguard Worker
1740*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import {
1741*333d2b36SAndroid Build Coastguard Worker    name: "myjavalib",
1742*333d2b36SAndroid Build Coastguard Worker    prefer: false,
1743*333d2b36SAndroid Build Coastguard Worker    visibility: ["//visibility:public"],
1744*333d2b36SAndroid Build Coastguard Worker    apex_available: ["//apex_available:platform"],
1745*333d2b36SAndroid Build Coastguard Worker    shared_library: true,
1746*333d2b36SAndroid Build Coastguard Worker    doctag_files: ["doctags/docs/known_doctags"],
1747*333d2b36SAndroid Build Coastguard Worker    public: {
1748*333d2b36SAndroid Build Coastguard Worker        jars: ["sdk_library/public/myjavalib-stubs.jar"],
1749*333d2b36SAndroid Build Coastguard Worker        stub_srcs: ["sdk_library/public/myjavalib_stub_sources"],
1750*333d2b36SAndroid Build Coastguard Worker        current_api: "sdk_library/public/myjavalib.txt",
1751*333d2b36SAndroid Build Coastguard Worker        removed_api: "sdk_library/public/myjavalib-removed.txt",
1752*333d2b36SAndroid Build Coastguard Worker        sdk_version: "current",
1753*333d2b36SAndroid Build Coastguard Worker    },
1754*333d2b36SAndroid Build Coastguard Worker}
1755*333d2b36SAndroid Build Coastguard Worker`),
1756*333d2b36SAndroid Build Coastguard Worker		checkAllCopyRules(`
1757*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.exportable/android_common/combined/myjavalib.stubs.exportable.jar -> sdk_library/public/myjavalib-stubs.jar
1758*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_api.txt -> sdk_library/public/myjavalib.txt
1759*333d2b36SAndroid Build Coastguard Worker.intermediates/myjavalib.stubs.source/android_common/exportable/myjavalib.stubs.source_removed.txt -> sdk_library/public/myjavalib-removed.txt
1760*333d2b36SAndroid Build Coastguard Workerdocs/known_doctags -> doctags/docs/known_doctags
1761*333d2b36SAndroid Build Coastguard Worker`),
1762*333d2b36SAndroid Build Coastguard Worker	)
1763*333d2b36SAndroid Build Coastguard Worker}
1764