xref: /aosp_15_r20/build/soong/java/sdk_version_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
1*333d2b36SAndroid Build Coastguard Worker// Copyright 2024 Google Inc. All rights reserved.
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 java
16*333d2b36SAndroid Build Coastguard Worker
17*333d2b36SAndroid Build Coastguard Workerimport (
18*333d2b36SAndroid Build Coastguard Worker	"testing"
19*333d2b36SAndroid Build Coastguard Worker
20*333d2b36SAndroid Build Coastguard Worker	"android/soong/android"
21*333d2b36SAndroid Build Coastguard Worker)
22*333d2b36SAndroid Build Coastguard Worker
23*333d2b36SAndroid Build Coastguard Workerfunc stringPtr(v string) *string {
24*333d2b36SAndroid Build Coastguard Worker	return &v
25*333d2b36SAndroid Build Coastguard Worker}
26*333d2b36SAndroid Build Coastguard Worker
27*333d2b36SAndroid Build Coastguard Workerfunc TestSystemSdkFromVendor(t *testing.T) {
28*333d2b36SAndroid Build Coastguard Worker	fixtures := android.GroupFixturePreparers(
29*333d2b36SAndroid Build Coastguard Worker		PrepareForTestWithJavaDefaultModules,
30*333d2b36SAndroid Build Coastguard Worker		android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
31*333d2b36SAndroid Build Coastguard Worker			variables.Platform_sdk_version = intPtr(34)
32*333d2b36SAndroid Build Coastguard Worker			variables.Platform_sdk_codename = stringPtr("VanillaIceCream")
33*333d2b36SAndroid Build Coastguard Worker			variables.Platform_version_active_codenames = []string{"VanillaIceCream"}
34*333d2b36SAndroid Build Coastguard Worker			variables.Platform_systemsdk_versions = []string{"33", "34", "VanillaIceCream"}
35*333d2b36SAndroid Build Coastguard Worker			variables.DeviceSystemSdkVersions = []string{"VanillaIceCream"}
36*333d2b36SAndroid Build Coastguard Worker		}),
37*333d2b36SAndroid Build Coastguard Worker		FixtureWithPrebuiltApis(map[string][]string{
38*333d2b36SAndroid Build Coastguard Worker			"33": {},
39*333d2b36SAndroid Build Coastguard Worker			"34": {},
40*333d2b36SAndroid Build Coastguard Worker			"35": {},
41*333d2b36SAndroid Build Coastguard Worker		}),
42*333d2b36SAndroid Build Coastguard Worker	)
43*333d2b36SAndroid Build Coastguard Worker
44*333d2b36SAndroid Build Coastguard Worker	fixtures.ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern("incompatible sdk version")).
45*333d2b36SAndroid Build Coastguard Worker		RunTestWithBp(t, `
46*333d2b36SAndroid Build Coastguard Worker		android_app {
47*333d2b36SAndroid Build Coastguard Worker			name: "foo",
48*333d2b36SAndroid Build Coastguard Worker			srcs: ["a.java"],
49*333d2b36SAndroid Build Coastguard Worker			vendor: true,
50*333d2b36SAndroid Build Coastguard Worker			sdk_version: "system_35",
51*333d2b36SAndroid Build Coastguard Worker		}`)
52*333d2b36SAndroid Build Coastguard Worker
53*333d2b36SAndroid Build Coastguard Worker	result := fixtures.RunTestWithBp(t, `
54*333d2b36SAndroid Build Coastguard Worker		android_app {
55*333d2b36SAndroid Build Coastguard Worker			name: "foo",
56*333d2b36SAndroid Build Coastguard Worker			srcs: ["a.java"],
57*333d2b36SAndroid Build Coastguard Worker			vendor: true,
58*333d2b36SAndroid Build Coastguard Worker			sdk_version: "system_current",
59*333d2b36SAndroid Build Coastguard Worker		}`)
60*333d2b36SAndroid Build Coastguard Worker	fooModule := result.ModuleForTests("foo", "android_common")
61*333d2b36SAndroid Build Coastguard Worker	fooClasspath := fooModule.Rule("javac").Args["classpath"]
62*333d2b36SAndroid Build Coastguard Worker
63*333d2b36SAndroid Build Coastguard Worker	android.AssertStringDoesContain(t, "foo classpath", fooClasspath, "prebuilts/sdk/34/system/android.jar")
64*333d2b36SAndroid Build Coastguard Worker	android.AssertStringDoesNotContain(t, "foo classpath", fooClasspath, "prebuilts/sdk/35/system/android.jar")
65*333d2b36SAndroid Build Coastguard Worker	android.AssertStringDoesNotContain(t, "foo classpath", fooClasspath, "prebuilts/sdk/current/system/android.jar")
66*333d2b36SAndroid Build Coastguard Worker}
67