xref: /aosp_15_r20/build/soong/java/container_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	"android/soong/android"
19*333d2b36SAndroid Build Coastguard Worker	"fmt"
20*333d2b36SAndroid Build Coastguard Worker	"testing"
21*333d2b36SAndroid Build Coastguard Worker)
22*333d2b36SAndroid Build Coastguard Worker
23*333d2b36SAndroid Build Coastguard Workervar checkContainerMatch = func(t *testing.T, name string, container string, expected bool, actual bool) {
24*333d2b36SAndroid Build Coastguard Worker	errorMessage := fmt.Sprintf("module %s container %s value differ", name, container)
25*333d2b36SAndroid Build Coastguard Worker	android.AssertBoolEquals(t, errorMessage, expected, actual)
26*333d2b36SAndroid Build Coastguard Worker}
27*333d2b36SAndroid Build Coastguard Worker
28*333d2b36SAndroid Build Coastguard Workerfunc TestJavaContainersModuleProperties(t *testing.T) {
29*333d2b36SAndroid Build Coastguard Worker	result := android.GroupFixturePreparers(
30*333d2b36SAndroid Build Coastguard Worker		prepareForJavaTest,
31*333d2b36SAndroid Build Coastguard Worker	).RunTestWithBp(t, `
32*333d2b36SAndroid Build Coastguard Worker		java_library {
33*333d2b36SAndroid Build Coastguard Worker			name: "foo",
34*333d2b36SAndroid Build Coastguard Worker			srcs: ["A.java"],
35*333d2b36SAndroid Build Coastguard Worker		}
36*333d2b36SAndroid Build Coastguard Worker		java_library {
37*333d2b36SAndroid Build Coastguard Worker			name: "foo_vendor",
38*333d2b36SAndroid Build Coastguard Worker			srcs: ["A.java"],
39*333d2b36SAndroid Build Coastguard Worker			vendor: true,
40*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
41*333d2b36SAndroid Build Coastguard Worker		}
42*333d2b36SAndroid Build Coastguard Worker		java_library {
43*333d2b36SAndroid Build Coastguard Worker			name: "foo_soc_specific",
44*333d2b36SAndroid Build Coastguard Worker			srcs: ["A.java"],
45*333d2b36SAndroid Build Coastguard Worker			soc_specific: true,
46*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
47*333d2b36SAndroid Build Coastguard Worker		}
48*333d2b36SAndroid Build Coastguard Worker		java_library {
49*333d2b36SAndroid Build Coastguard Worker			name: "foo_product_specific",
50*333d2b36SAndroid Build Coastguard Worker			srcs: ["A.java"],
51*333d2b36SAndroid Build Coastguard Worker			product_specific: true,
52*333d2b36SAndroid Build Coastguard Worker			sdk_version: "current",
53*333d2b36SAndroid Build Coastguard Worker		}
54*333d2b36SAndroid Build Coastguard Worker		java_test {
55*333d2b36SAndroid Build Coastguard Worker			name: "foo_cts_test",
56*333d2b36SAndroid Build Coastguard Worker			srcs: ["A.java"],
57*333d2b36SAndroid Build Coastguard Worker			test_suites: [
58*333d2b36SAndroid Build Coastguard Worker				"cts",
59*333d2b36SAndroid Build Coastguard Worker			],
60*333d2b36SAndroid Build Coastguard Worker		}
61*333d2b36SAndroid Build Coastguard Worker		java_test {
62*333d2b36SAndroid Build Coastguard Worker			name: "foo_non_cts_test",
63*333d2b36SAndroid Build Coastguard Worker			srcs: ["A.java"],
64*333d2b36SAndroid Build Coastguard Worker			test_suites: [
65*333d2b36SAndroid Build Coastguard Worker				"general-tests",
66*333d2b36SAndroid Build Coastguard Worker			],
67*333d2b36SAndroid Build Coastguard Worker		}
68*333d2b36SAndroid Build Coastguard Worker		java_library {
69*333d2b36SAndroid Build Coastguard Worker			name: "bar",
70*333d2b36SAndroid Build Coastguard Worker			static_libs: [
71*333d2b36SAndroid Build Coastguard Worker				"framework-minus-apex",
72*333d2b36SAndroid Build Coastguard Worker			],
73*333d2b36SAndroid Build Coastguard Worker		}
74*333d2b36SAndroid Build Coastguard Worker		java_library {
75*333d2b36SAndroid Build Coastguard Worker			name: "baz",
76*333d2b36SAndroid Build Coastguard Worker			static_libs: [
77*333d2b36SAndroid Build Coastguard Worker				"bar",
78*333d2b36SAndroid Build Coastguard Worker			],
79*333d2b36SAndroid Build Coastguard Worker		}
80*333d2b36SAndroid Build Coastguard Worker	`)
81*333d2b36SAndroid Build Coastguard Worker
82*333d2b36SAndroid Build Coastguard Worker	testcases := []struct {
83*333d2b36SAndroid Build Coastguard Worker		moduleName         string
84*333d2b36SAndroid Build Coastguard Worker		isSystemContainer  bool
85*333d2b36SAndroid Build Coastguard Worker		isVendorContainer  bool
86*333d2b36SAndroid Build Coastguard Worker		isProductContainer bool
87*333d2b36SAndroid Build Coastguard Worker		isCts              bool
88*333d2b36SAndroid Build Coastguard Worker		isUnstable         bool
89*333d2b36SAndroid Build Coastguard Worker	}{
90*333d2b36SAndroid Build Coastguard Worker		{
91*333d2b36SAndroid Build Coastguard Worker			moduleName:         "foo",
92*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  true,
93*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  false,
94*333d2b36SAndroid Build Coastguard Worker			isProductContainer: false,
95*333d2b36SAndroid Build Coastguard Worker			isCts:              false,
96*333d2b36SAndroid Build Coastguard Worker			isUnstable:         false,
97*333d2b36SAndroid Build Coastguard Worker		},
98*333d2b36SAndroid Build Coastguard Worker		{
99*333d2b36SAndroid Build Coastguard Worker			moduleName:         "foo_vendor",
100*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  false,
101*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  true,
102*333d2b36SAndroid Build Coastguard Worker			isProductContainer: false,
103*333d2b36SAndroid Build Coastguard Worker			isCts:              false,
104*333d2b36SAndroid Build Coastguard Worker			isUnstable:         false,
105*333d2b36SAndroid Build Coastguard Worker		},
106*333d2b36SAndroid Build Coastguard Worker		{
107*333d2b36SAndroid Build Coastguard Worker			moduleName:         "foo_soc_specific",
108*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  false,
109*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  true,
110*333d2b36SAndroid Build Coastguard Worker			isProductContainer: false,
111*333d2b36SAndroid Build Coastguard Worker			isCts:              false,
112*333d2b36SAndroid Build Coastguard Worker			isUnstable:         false,
113*333d2b36SAndroid Build Coastguard Worker		},
114*333d2b36SAndroid Build Coastguard Worker		{
115*333d2b36SAndroid Build Coastguard Worker			moduleName:         "foo_product_specific",
116*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  false,
117*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  false,
118*333d2b36SAndroid Build Coastguard Worker			isProductContainer: true,
119*333d2b36SAndroid Build Coastguard Worker			isCts:              false,
120*333d2b36SAndroid Build Coastguard Worker			isUnstable:         false,
121*333d2b36SAndroid Build Coastguard Worker		},
122*333d2b36SAndroid Build Coastguard Worker		{
123*333d2b36SAndroid Build Coastguard Worker			moduleName:         "foo_cts_test",
124*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  false,
125*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  false,
126*333d2b36SAndroid Build Coastguard Worker			isProductContainer: false,
127*333d2b36SAndroid Build Coastguard Worker			isCts:              true,
128*333d2b36SAndroid Build Coastguard Worker			isUnstable:         false,
129*333d2b36SAndroid Build Coastguard Worker		},
130*333d2b36SAndroid Build Coastguard Worker		{
131*333d2b36SAndroid Build Coastguard Worker			moduleName:         "foo_non_cts_test",
132*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  false,
133*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  false,
134*333d2b36SAndroid Build Coastguard Worker			isProductContainer: false,
135*333d2b36SAndroid Build Coastguard Worker			isCts:              false,
136*333d2b36SAndroid Build Coastguard Worker			isUnstable:         false,
137*333d2b36SAndroid Build Coastguard Worker		},
138*333d2b36SAndroid Build Coastguard Worker		{
139*333d2b36SAndroid Build Coastguard Worker			moduleName:         "bar",
140*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  true,
141*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  false,
142*333d2b36SAndroid Build Coastguard Worker			isProductContainer: false,
143*333d2b36SAndroid Build Coastguard Worker			isCts:              false,
144*333d2b36SAndroid Build Coastguard Worker			isUnstable:         true,
145*333d2b36SAndroid Build Coastguard Worker		},
146*333d2b36SAndroid Build Coastguard Worker		{
147*333d2b36SAndroid Build Coastguard Worker			moduleName:         "baz",
148*333d2b36SAndroid Build Coastguard Worker			isSystemContainer:  true,
149*333d2b36SAndroid Build Coastguard Worker			isVendorContainer:  false,
150*333d2b36SAndroid Build Coastguard Worker			isProductContainer: false,
151*333d2b36SAndroid Build Coastguard Worker			isCts:              false,
152*333d2b36SAndroid Build Coastguard Worker			isUnstable:         true,
153*333d2b36SAndroid Build Coastguard Worker		},
154*333d2b36SAndroid Build Coastguard Worker	}
155*333d2b36SAndroid Build Coastguard Worker
156*333d2b36SAndroid Build Coastguard Worker	for _, c := range testcases {
157*333d2b36SAndroid Build Coastguard Worker		m := result.ModuleForTests(c.moduleName, "android_common")
158*333d2b36SAndroid Build Coastguard Worker		containers, _ := android.OtherModuleProvider(result.TestContext.OtherModuleProviderAdaptor(), m.Module(), android.ContainersInfoProvider)
159*333d2b36SAndroid Build Coastguard Worker		belongingContainers := containers.BelongingContainers()
160*333d2b36SAndroid Build Coastguard Worker		checkContainerMatch(t, c.moduleName, "system", c.isSystemContainer, android.InList(android.SystemContainer, belongingContainers))
161*333d2b36SAndroid Build Coastguard Worker		checkContainerMatch(t, c.moduleName, "vendor", c.isVendorContainer, android.InList(android.VendorContainer, belongingContainers))
162*333d2b36SAndroid Build Coastguard Worker		checkContainerMatch(t, c.moduleName, "product", c.isProductContainer, android.InList(android.ProductContainer, belongingContainers))
163*333d2b36SAndroid Build Coastguard Worker		checkContainerMatch(t, c.moduleName, "cts", c.isCts, android.InList(android.CtsContainer, belongingContainers))
164*333d2b36SAndroid Build Coastguard Worker		checkContainerMatch(t, c.moduleName, "unstable", c.isUnstable, android.InList(android.UnstableContainer, belongingContainers))
165*333d2b36SAndroid Build Coastguard Worker	}
166*333d2b36SAndroid Build Coastguard Worker}
167