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