blob: 25cfa4c7efa7dd364dcceccecc40f728c0457731 [file] [log] [blame]
Jihoon Kangf86fe9a2024-06-26 22:18:10 +00001// Copyright 2024 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package java
16
17import (
18 "android/soong/android"
19 "fmt"
20 "testing"
21)
22
23var checkContainerMatch = func(t *testing.T, name string, container string, expected bool, actual bool) {
24 errorMessage := fmt.Sprintf("module %s container %s value differ", name, container)
25 android.AssertBoolEquals(t, errorMessage, expected, actual)
26}
27
28func TestJavaContainersModuleProperties(t *testing.T) {
29 result := android.GroupFixturePreparers(
30 prepareForJavaTest,
31 ).RunTestWithBp(t, `
32 java_library {
33 name: "foo",
34 srcs: ["A.java"],
35 }
36 java_library {
37 name: "foo_vendor",
38 srcs: ["A.java"],
39 vendor: true,
40 sdk_version: "current",
41 }
42 java_library {
43 name: "foo_soc_specific",
44 srcs: ["A.java"],
45 soc_specific: true,
46 sdk_version: "current",
47 }
48 java_library {
49 name: "foo_product_specific",
50 srcs: ["A.java"],
51 product_specific: true,
52 sdk_version: "current",
53 }
54 java_test {
55 name: "foo_cts_test",
56 srcs: ["A.java"],
57 test_suites: [
58 "cts",
59 ],
60 }
61 java_test {
62 name: "foo_non_cts_test",
63 srcs: ["A.java"],
64 test_suites: [
65 "general-tests",
66 ],
67 }
Jihoon Kang0f3b1a72024-08-12 22:47:01 +000068 java_library {
69 name: "bar",
70 static_libs: [
71 "framework-minus-apex",
72 ],
73 }
74 java_library {
75 name: "baz",
76 static_libs: [
77 "bar",
78 ],
79 }
Jihoon Kangf86fe9a2024-06-26 22:18:10 +000080 `)
81
82 testcases := []struct {
83 moduleName string
84 isSystemContainer bool
85 isVendorContainer bool
86 isProductContainer bool
87 isCts bool
Jihoon Kang0f3b1a72024-08-12 22:47:01 +000088 isUnstable bool
Jihoon Kangf86fe9a2024-06-26 22:18:10 +000089 }{
90 {
91 moduleName: "foo",
92 isSystemContainer: true,
93 isVendorContainer: false,
94 isProductContainer: false,
95 isCts: false,
Jihoon Kang0f3b1a72024-08-12 22:47:01 +000096 isUnstable: false,
Jihoon Kangf86fe9a2024-06-26 22:18:10 +000097 },
98 {
99 moduleName: "foo_vendor",
100 isSystemContainer: false,
101 isVendorContainer: true,
102 isProductContainer: false,
103 isCts: false,
Jihoon Kang0f3b1a72024-08-12 22:47:01 +0000104 isUnstable: false,
Jihoon Kangf86fe9a2024-06-26 22:18:10 +0000105 },
106 {
107 moduleName: "foo_soc_specific",
108 isSystemContainer: false,
109 isVendorContainer: true,
110 isProductContainer: false,
111 isCts: false,
Jihoon Kang0f3b1a72024-08-12 22:47:01 +0000112 isUnstable: false,
Jihoon Kangf86fe9a2024-06-26 22:18:10 +0000113 },
114 {
115 moduleName: "foo_product_specific",
116 isSystemContainer: false,
117 isVendorContainer: false,
118 isProductContainer: true,
119 isCts: false,
Jihoon Kang0f3b1a72024-08-12 22:47:01 +0000120 isUnstable: false,
Jihoon Kangf86fe9a2024-06-26 22:18:10 +0000121 },
122 {
123 moduleName: "foo_cts_test",
124 isSystemContainer: false,
125 isVendorContainer: false,
126 isProductContainer: false,
127 isCts: true,
Jihoon Kang0f3b1a72024-08-12 22:47:01 +0000128 isUnstable: false,
Jihoon Kangf86fe9a2024-06-26 22:18:10 +0000129 },
130 {
131 moduleName: "foo_non_cts_test",
132 isSystemContainer: false,
133 isVendorContainer: false,
134 isProductContainer: false,
135 isCts: false,
Jihoon Kang0f3b1a72024-08-12 22:47:01 +0000136 isUnstable: false,
137 },
138 {
139 moduleName: "bar",
140 isSystemContainer: true,
141 isVendorContainer: false,
142 isProductContainer: false,
143 isCts: false,
144 isUnstable: true,
145 },
146 {
147 moduleName: "baz",
148 isSystemContainer: true,
149 isVendorContainer: false,
150 isProductContainer: false,
151 isCts: false,
152 isUnstable: true,
Jihoon Kangf86fe9a2024-06-26 22:18:10 +0000153 },
154 }
155
156 for _, c := range testcases {
157 m := result.ModuleForTests(c.moduleName, "android_common")
158 containers, _ := android.OtherModuleProvider(result.TestContext.OtherModuleProviderAdaptor(), m.Module(), android.ContainersInfoProvider)
159 belongingContainers := containers.BelongingContainers()
160 checkContainerMatch(t, c.moduleName, "system", c.isSystemContainer, android.InList(android.SystemContainer, belongingContainers))
161 checkContainerMatch(t, c.moduleName, "vendor", c.isVendorContainer, android.InList(android.VendorContainer, belongingContainers))
162 checkContainerMatch(t, c.moduleName, "product", c.isProductContainer, android.InList(android.ProductContainer, belongingContainers))
Jihoon Kang0f3b1a72024-08-12 22:47:01 +0000163 checkContainerMatch(t, c.moduleName, "cts", c.isCts, android.InList(android.CtsContainer, belongingContainers))
164 checkContainerMatch(t, c.moduleName, "unstable", c.isUnstable, android.InList(android.UnstableContainer, belongingContainers))
Jihoon Kangf86fe9a2024-06-26 22:18:10 +0000165 }
166}