1*333d2b36SAndroid Build Coastguard Worker// Copyright 2020 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 android 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "strings" 19*333d2b36SAndroid Build Coastguard Worker "testing" 20*333d2b36SAndroid Build Coastguard Worker 21*333d2b36SAndroid Build Coastguard Worker "github.com/google/blueprint" 22*333d2b36SAndroid Build Coastguard Worker "github.com/google/blueprint/proptools" 23*333d2b36SAndroid Build Coastguard Worker) 24*333d2b36SAndroid Build Coastguard Worker 25*333d2b36SAndroid Build Coastguard Worker// Module to be packaged 26*333d2b36SAndroid Build Coastguard Workertype componentTestModule struct { 27*333d2b36SAndroid Build Coastguard Worker ModuleBase 28*333d2b36SAndroid Build Coastguard Worker props struct { 29*333d2b36SAndroid Build Coastguard Worker Deps []string 30*333d2b36SAndroid Build Coastguard Worker Skip_install *bool 31*333d2b36SAndroid Build Coastguard Worker Overrides []string 32*333d2b36SAndroid Build Coastguard Worker } 33*333d2b36SAndroid Build Coastguard Worker} 34*333d2b36SAndroid Build Coastguard Worker 35*333d2b36SAndroid Build Coastguard Worker// dep tag used in this test. All dependencies are considered as installable. 36*333d2b36SAndroid Build Coastguard Workertype installDepTag struct { 37*333d2b36SAndroid Build Coastguard Worker blueprint.BaseDependencyTag 38*333d2b36SAndroid Build Coastguard Worker InstallAlwaysNeededDependencyTag 39*333d2b36SAndroid Build Coastguard Worker} 40*333d2b36SAndroid Build Coastguard Worker 41*333d2b36SAndroid Build Coastguard Workerfunc componentTestModuleFactory() Module { 42*333d2b36SAndroid Build Coastguard Worker m := &componentTestModule{} 43*333d2b36SAndroid Build Coastguard Worker m.AddProperties(&m.props) 44*333d2b36SAndroid Build Coastguard Worker InitAndroidArchModule(m, HostAndDeviceSupported, MultilibBoth) 45*333d2b36SAndroid Build Coastguard Worker return m 46*333d2b36SAndroid Build Coastguard Worker} 47*333d2b36SAndroid Build Coastguard Worker 48*333d2b36SAndroid Build Coastguard Workerfunc (m *componentTestModule) DepsMutator(ctx BottomUpMutatorContext) { 49*333d2b36SAndroid Build Coastguard Worker ctx.AddDependency(ctx.Module(), installDepTag{}, m.props.Deps...) 50*333d2b36SAndroid Build Coastguard Worker} 51*333d2b36SAndroid Build Coastguard Worker 52*333d2b36SAndroid Build Coastguard Workerfunc (m *componentTestModule) GenerateAndroidBuildActions(ctx ModuleContext) { 53*333d2b36SAndroid Build Coastguard Worker builtFile := PathForModuleOut(ctx, m.Name()) 54*333d2b36SAndroid Build Coastguard Worker dir := ctx.Target().Arch.ArchType.Multilib 55*333d2b36SAndroid Build Coastguard Worker installDir := PathForModuleInstall(ctx, dir) 56*333d2b36SAndroid Build Coastguard Worker if proptools.Bool(m.props.Skip_install) { 57*333d2b36SAndroid Build Coastguard Worker m.SkipInstall() 58*333d2b36SAndroid Build Coastguard Worker } 59*333d2b36SAndroid Build Coastguard Worker ctx.InstallFile(installDir, m.Name(), builtFile) 60*333d2b36SAndroid Build Coastguard Worker} 61*333d2b36SAndroid Build Coastguard Worker 62*333d2b36SAndroid Build Coastguard Worker// Module that itself is a package 63*333d2b36SAndroid Build Coastguard Workertype packageTestModule struct { 64*333d2b36SAndroid Build Coastguard Worker ModuleBase 65*333d2b36SAndroid Build Coastguard Worker PackagingBase 66*333d2b36SAndroid Build Coastguard Worker properties struct { 67*333d2b36SAndroid Build Coastguard Worker Install_deps []string 68*333d2b36SAndroid Build Coastguard Worker } 69*333d2b36SAndroid Build Coastguard Worker entries []string 70*333d2b36SAndroid Build Coastguard Worker} 71*333d2b36SAndroid Build Coastguard Worker 72*333d2b36SAndroid Build Coastguard Workerfunc packageTestModuleFactory(multiTarget bool, depsCollectFirstTargetOnly bool) Module { 73*333d2b36SAndroid Build Coastguard Worker module := &packageTestModule{} 74*333d2b36SAndroid Build Coastguard Worker InitPackageModule(module) 75*333d2b36SAndroid Build Coastguard Worker module.DepsCollectFirstTargetOnly = depsCollectFirstTargetOnly 76*333d2b36SAndroid Build Coastguard Worker if multiTarget { 77*333d2b36SAndroid Build Coastguard Worker InitAndroidMultiTargetsArchModule(module, DeviceSupported, MultilibCommon) 78*333d2b36SAndroid Build Coastguard Worker } else { 79*333d2b36SAndroid Build Coastguard Worker InitAndroidArchModule(module, DeviceSupported, MultilibBoth) 80*333d2b36SAndroid Build Coastguard Worker } 81*333d2b36SAndroid Build Coastguard Worker module.AddProperties(&module.properties) 82*333d2b36SAndroid Build Coastguard Worker return module 83*333d2b36SAndroid Build Coastguard Worker} 84*333d2b36SAndroid Build Coastguard Worker 85*333d2b36SAndroid Build Coastguard Workertype packagingDepTag struct { 86*333d2b36SAndroid Build Coastguard Worker blueprint.BaseDependencyTag 87*333d2b36SAndroid Build Coastguard Worker PackagingItemAlwaysDepTag 88*333d2b36SAndroid Build Coastguard Worker} 89*333d2b36SAndroid Build Coastguard Worker 90*333d2b36SAndroid Build Coastguard Workerfunc (m *packageTestModule) DepsMutator(ctx BottomUpMutatorContext) { 91*333d2b36SAndroid Build Coastguard Worker m.AddDeps(ctx, packagingDepTag{}) 92*333d2b36SAndroid Build Coastguard Worker ctx.AddDependency(ctx.Module(), installDepTag{}, m.properties.Install_deps...) 93*333d2b36SAndroid Build Coastguard Worker} 94*333d2b36SAndroid Build Coastguard Worker 95*333d2b36SAndroid Build Coastguard Workerfunc (m *packageTestModule) GenerateAndroidBuildActions(ctx ModuleContext) { 96*333d2b36SAndroid Build Coastguard Worker zipFile := PathForModuleOut(ctx, "myzip.zip") 97*333d2b36SAndroid Build Coastguard Worker m.entries = m.CopyDepsToZip(ctx, m.GatherPackagingSpecs(ctx), zipFile) 98*333d2b36SAndroid Build Coastguard Worker} 99*333d2b36SAndroid Build Coastguard Worker 100*333d2b36SAndroid Build Coastguard Workertype testConfig struct { 101*333d2b36SAndroid Build Coastguard Worker multiTarget bool 102*333d2b36SAndroid Build Coastguard Worker depsCollectFirstTargetOnly bool 103*333d2b36SAndroid Build Coastguard Worker debuggable bool 104*333d2b36SAndroid Build Coastguard Worker} 105*333d2b36SAndroid Build Coastguard Worker 106*333d2b36SAndroid Build Coastguard Workerfunc runPackagingTest(t *testing.T, config testConfig, bp string, expected []string) { 107*333d2b36SAndroid Build Coastguard Worker t.Helper() 108*333d2b36SAndroid Build Coastguard Worker 109*333d2b36SAndroid Build Coastguard Worker var archVariant string 110*333d2b36SAndroid Build Coastguard Worker if config.multiTarget { 111*333d2b36SAndroid Build Coastguard Worker archVariant = "android_common" 112*333d2b36SAndroid Build Coastguard Worker } else { 113*333d2b36SAndroid Build Coastguard Worker archVariant = "android_arm64_armv8-a" 114*333d2b36SAndroid Build Coastguard Worker } 115*333d2b36SAndroid Build Coastguard Worker 116*333d2b36SAndroid Build Coastguard Worker moduleFactory := func() Module { 117*333d2b36SAndroid Build Coastguard Worker return packageTestModuleFactory(config.multiTarget, config.depsCollectFirstTargetOnly) 118*333d2b36SAndroid Build Coastguard Worker } 119*333d2b36SAndroid Build Coastguard Worker 120*333d2b36SAndroid Build Coastguard Worker result := GroupFixturePreparers( 121*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithDefaults, 122*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithArchMutator, 123*333d2b36SAndroid Build Coastguard Worker FixtureRegisterWithContext(func(ctx RegistrationContext) { 124*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("component", componentTestModuleFactory) 125*333d2b36SAndroid Build Coastguard Worker ctx.RegisterModuleType("package_module", moduleFactory) 126*333d2b36SAndroid Build Coastguard Worker }), 127*333d2b36SAndroid Build Coastguard Worker FixtureModifyProductVariables(func(variables FixtureProductVariables) { 128*333d2b36SAndroid Build Coastguard Worker variables.Debuggable = proptools.BoolPtr(config.debuggable) 129*333d2b36SAndroid Build Coastguard Worker }), 130*333d2b36SAndroid Build Coastguard Worker FixtureWithRootAndroidBp(bp), 131*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 132*333d2b36SAndroid Build Coastguard Worker 133*333d2b36SAndroid Build Coastguard Worker p := result.Module("package", archVariant).(*packageTestModule) 134*333d2b36SAndroid Build Coastguard Worker actual := p.entries 135*333d2b36SAndroid Build Coastguard Worker actual = SortedUniqueStrings(actual) 136*333d2b36SAndroid Build Coastguard Worker expected = SortedUniqueStrings(expected) 137*333d2b36SAndroid Build Coastguard Worker AssertDeepEquals(t, "package entries", expected, actual) 138*333d2b36SAndroid Build Coastguard Worker} 139*333d2b36SAndroid Build Coastguard Worker 140*333d2b36SAndroid Build Coastguard Workerfunc TestPackagingBaseMultiTarget(t *testing.T) { 141*333d2b36SAndroid Build Coastguard Worker config := testConfig{ 142*333d2b36SAndroid Build Coastguard Worker multiTarget: true, 143*333d2b36SAndroid Build Coastguard Worker depsCollectFirstTargetOnly: false, 144*333d2b36SAndroid Build Coastguard Worker } 145*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 146*333d2b36SAndroid Build Coastguard Worker ` 147*333d2b36SAndroid Build Coastguard Worker component { 148*333d2b36SAndroid Build Coastguard Worker name: "foo", 149*333d2b36SAndroid Build Coastguard Worker } 150*333d2b36SAndroid Build Coastguard Worker 151*333d2b36SAndroid Build Coastguard Worker package_module { 152*333d2b36SAndroid Build Coastguard Worker name: "package", 153*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 154*333d2b36SAndroid Build Coastguard Worker } 155*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo"}) 156*333d2b36SAndroid Build Coastguard Worker 157*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 158*333d2b36SAndroid Build Coastguard Worker ` 159*333d2b36SAndroid Build Coastguard Worker component { 160*333d2b36SAndroid Build Coastguard Worker name: "foo", 161*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 162*333d2b36SAndroid Build Coastguard Worker } 163*333d2b36SAndroid Build Coastguard Worker 164*333d2b36SAndroid Build Coastguard Worker component { 165*333d2b36SAndroid Build Coastguard Worker name: "bar", 166*333d2b36SAndroid Build Coastguard Worker } 167*333d2b36SAndroid Build Coastguard Worker 168*333d2b36SAndroid Build Coastguard Worker package_module { 169*333d2b36SAndroid Build Coastguard Worker name: "package", 170*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 171*333d2b36SAndroid Build Coastguard Worker } 172*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar"}) 173*333d2b36SAndroid Build Coastguard Worker 174*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 175*333d2b36SAndroid Build Coastguard Worker ` 176*333d2b36SAndroid Build Coastguard Worker component { 177*333d2b36SAndroid Build Coastguard Worker name: "foo", 178*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 179*333d2b36SAndroid Build Coastguard Worker } 180*333d2b36SAndroid Build Coastguard Worker 181*333d2b36SAndroid Build Coastguard Worker component { 182*333d2b36SAndroid Build Coastguard Worker name: "bar", 183*333d2b36SAndroid Build Coastguard Worker } 184*333d2b36SAndroid Build Coastguard Worker 185*333d2b36SAndroid Build Coastguard Worker package_module { 186*333d2b36SAndroid Build Coastguard Worker name: "package", 187*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 188*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 189*333d2b36SAndroid Build Coastguard Worker } 190*333d2b36SAndroid Build Coastguard Worker `, []string{"lib32/foo", "lib32/bar", "lib64/foo", "lib64/bar"}) 191*333d2b36SAndroid Build Coastguard Worker 192*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 193*333d2b36SAndroid Build Coastguard Worker ` 194*333d2b36SAndroid Build Coastguard Worker component { 195*333d2b36SAndroid Build Coastguard Worker name: "foo", 196*333d2b36SAndroid Build Coastguard Worker } 197*333d2b36SAndroid Build Coastguard Worker 198*333d2b36SAndroid Build Coastguard Worker component { 199*333d2b36SAndroid Build Coastguard Worker name: "bar", 200*333d2b36SAndroid Build Coastguard Worker compile_multilib: "32", 201*333d2b36SAndroid Build Coastguard Worker } 202*333d2b36SAndroid Build Coastguard Worker 203*333d2b36SAndroid Build Coastguard Worker package_module { 204*333d2b36SAndroid Build Coastguard Worker name: "package", 205*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 206*333d2b36SAndroid Build Coastguard Worker multilib: { 207*333d2b36SAndroid Build Coastguard Worker lib32: { 208*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 209*333d2b36SAndroid Build Coastguard Worker }, 210*333d2b36SAndroid Build Coastguard Worker }, 211*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 212*333d2b36SAndroid Build Coastguard Worker } 213*333d2b36SAndroid Build Coastguard Worker `, []string{"lib32/foo", "lib32/bar", "lib64/foo"}) 214*333d2b36SAndroid Build Coastguard Worker 215*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 216*333d2b36SAndroid Build Coastguard Worker ` 217*333d2b36SAndroid Build Coastguard Worker component { 218*333d2b36SAndroid Build Coastguard Worker name: "foo", 219*333d2b36SAndroid Build Coastguard Worker } 220*333d2b36SAndroid Build Coastguard Worker 221*333d2b36SAndroid Build Coastguard Worker component { 222*333d2b36SAndroid Build Coastguard Worker name: "bar", 223*333d2b36SAndroid Build Coastguard Worker } 224*333d2b36SAndroid Build Coastguard Worker 225*333d2b36SAndroid Build Coastguard Worker package_module { 226*333d2b36SAndroid Build Coastguard Worker name: "package", 227*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 228*333d2b36SAndroid Build Coastguard Worker multilib: { 229*333d2b36SAndroid Build Coastguard Worker first: { 230*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 231*333d2b36SAndroid Build Coastguard Worker }, 232*333d2b36SAndroid Build Coastguard Worker }, 233*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 234*333d2b36SAndroid Build Coastguard Worker } 235*333d2b36SAndroid Build Coastguard Worker `, []string{"lib32/foo", "lib64/foo", "lib64/bar"}) 236*333d2b36SAndroid Build Coastguard Worker 237*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 238*333d2b36SAndroid Build Coastguard Worker ` 239*333d2b36SAndroid Build Coastguard Worker component { 240*333d2b36SAndroid Build Coastguard Worker name: "foo", 241*333d2b36SAndroid Build Coastguard Worker } 242*333d2b36SAndroid Build Coastguard Worker 243*333d2b36SAndroid Build Coastguard Worker component { 244*333d2b36SAndroid Build Coastguard Worker name: "bar", 245*333d2b36SAndroid Build Coastguard Worker } 246*333d2b36SAndroid Build Coastguard Worker 247*333d2b36SAndroid Build Coastguard Worker component { 248*333d2b36SAndroid Build Coastguard Worker name: "baz", 249*333d2b36SAndroid Build Coastguard Worker } 250*333d2b36SAndroid Build Coastguard Worker 251*333d2b36SAndroid Build Coastguard Worker package_module { 252*333d2b36SAndroid Build Coastguard Worker name: "package", 253*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 254*333d2b36SAndroid Build Coastguard Worker arch: { 255*333d2b36SAndroid Build Coastguard Worker arm64: { 256*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 257*333d2b36SAndroid Build Coastguard Worker }, 258*333d2b36SAndroid Build Coastguard Worker x86_64: { 259*333d2b36SAndroid Build Coastguard Worker deps: ["baz"], 260*333d2b36SAndroid Build Coastguard Worker }, 261*333d2b36SAndroid Build Coastguard Worker }, 262*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 263*333d2b36SAndroid Build Coastguard Worker } 264*333d2b36SAndroid Build Coastguard Worker `, []string{"lib32/foo", "lib64/foo", "lib64/bar"}) 265*333d2b36SAndroid Build Coastguard Worker} 266*333d2b36SAndroid Build Coastguard Worker 267*333d2b36SAndroid Build Coastguard Workerfunc TestPackagingBaseSingleTarget(t *testing.T) { 268*333d2b36SAndroid Build Coastguard Worker config := testConfig{ 269*333d2b36SAndroid Build Coastguard Worker multiTarget: false, 270*333d2b36SAndroid Build Coastguard Worker depsCollectFirstTargetOnly: false, 271*333d2b36SAndroid Build Coastguard Worker } 272*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 273*333d2b36SAndroid Build Coastguard Worker ` 274*333d2b36SAndroid Build Coastguard Worker component { 275*333d2b36SAndroid Build Coastguard Worker name: "foo", 276*333d2b36SAndroid Build Coastguard Worker } 277*333d2b36SAndroid Build Coastguard Worker 278*333d2b36SAndroid Build Coastguard Worker package_module { 279*333d2b36SAndroid Build Coastguard Worker name: "package", 280*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 281*333d2b36SAndroid Build Coastguard Worker } 282*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo"}) 283*333d2b36SAndroid Build Coastguard Worker 284*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 285*333d2b36SAndroid Build Coastguard Worker ` 286*333d2b36SAndroid Build Coastguard Worker component { 287*333d2b36SAndroid Build Coastguard Worker name: "foo", 288*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 289*333d2b36SAndroid Build Coastguard Worker } 290*333d2b36SAndroid Build Coastguard Worker 291*333d2b36SAndroid Build Coastguard Worker component { 292*333d2b36SAndroid Build Coastguard Worker name: "bar", 293*333d2b36SAndroid Build Coastguard Worker } 294*333d2b36SAndroid Build Coastguard Worker 295*333d2b36SAndroid Build Coastguard Worker package_module { 296*333d2b36SAndroid Build Coastguard Worker name: "package", 297*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 298*333d2b36SAndroid Build Coastguard Worker } 299*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar"}) 300*333d2b36SAndroid Build Coastguard Worker 301*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 302*333d2b36SAndroid Build Coastguard Worker ` 303*333d2b36SAndroid Build Coastguard Worker component { 304*333d2b36SAndroid Build Coastguard Worker name: "foo", 305*333d2b36SAndroid Build Coastguard Worker } 306*333d2b36SAndroid Build Coastguard Worker 307*333d2b36SAndroid Build Coastguard Worker component { 308*333d2b36SAndroid Build Coastguard Worker name: "bar", 309*333d2b36SAndroid Build Coastguard Worker compile_multilib: "32", 310*333d2b36SAndroid Build Coastguard Worker } 311*333d2b36SAndroid Build Coastguard Worker 312*333d2b36SAndroid Build Coastguard Worker package_module { 313*333d2b36SAndroid Build Coastguard Worker name: "package", 314*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 315*333d2b36SAndroid Build Coastguard Worker multilib: { 316*333d2b36SAndroid Build Coastguard Worker lib32: { 317*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 318*333d2b36SAndroid Build Coastguard Worker }, 319*333d2b36SAndroid Build Coastguard Worker }, 320*333d2b36SAndroid Build Coastguard Worker } 321*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo"}) 322*333d2b36SAndroid Build Coastguard Worker 323*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 324*333d2b36SAndroid Build Coastguard Worker ` 325*333d2b36SAndroid Build Coastguard Worker component { 326*333d2b36SAndroid Build Coastguard Worker name: "foo", 327*333d2b36SAndroid Build Coastguard Worker } 328*333d2b36SAndroid Build Coastguard Worker 329*333d2b36SAndroid Build Coastguard Worker component { 330*333d2b36SAndroid Build Coastguard Worker name: "bar", 331*333d2b36SAndroid Build Coastguard Worker } 332*333d2b36SAndroid Build Coastguard Worker 333*333d2b36SAndroid Build Coastguard Worker package_module { 334*333d2b36SAndroid Build Coastguard Worker name: "package", 335*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 336*333d2b36SAndroid Build Coastguard Worker multilib: { 337*333d2b36SAndroid Build Coastguard Worker lib64: { 338*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 339*333d2b36SAndroid Build Coastguard Worker }, 340*333d2b36SAndroid Build Coastguard Worker }, 341*333d2b36SAndroid Build Coastguard Worker } 342*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar"}) 343*333d2b36SAndroid Build Coastguard Worker 344*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 345*333d2b36SAndroid Build Coastguard Worker ` 346*333d2b36SAndroid Build Coastguard Worker component { 347*333d2b36SAndroid Build Coastguard Worker name: "foo", 348*333d2b36SAndroid Build Coastguard Worker } 349*333d2b36SAndroid Build Coastguard Worker 350*333d2b36SAndroid Build Coastguard Worker component { 351*333d2b36SAndroid Build Coastguard Worker name: "bar", 352*333d2b36SAndroid Build Coastguard Worker } 353*333d2b36SAndroid Build Coastguard Worker 354*333d2b36SAndroid Build Coastguard Worker component { 355*333d2b36SAndroid Build Coastguard Worker name: "baz", 356*333d2b36SAndroid Build Coastguard Worker } 357*333d2b36SAndroid Build Coastguard Worker 358*333d2b36SAndroid Build Coastguard Worker package_module { 359*333d2b36SAndroid Build Coastguard Worker name: "package", 360*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 361*333d2b36SAndroid Build Coastguard Worker arch: { 362*333d2b36SAndroid Build Coastguard Worker arm64: { 363*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 364*333d2b36SAndroid Build Coastguard Worker }, 365*333d2b36SAndroid Build Coastguard Worker x86_64: { 366*333d2b36SAndroid Build Coastguard Worker deps: ["baz"], 367*333d2b36SAndroid Build Coastguard Worker }, 368*333d2b36SAndroid Build Coastguard Worker }, 369*333d2b36SAndroid Build Coastguard Worker } 370*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar"}) 371*333d2b36SAndroid Build Coastguard Worker 372*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 373*333d2b36SAndroid Build Coastguard Worker ` 374*333d2b36SAndroid Build Coastguard Worker component { 375*333d2b36SAndroid Build Coastguard Worker name: "foo", 376*333d2b36SAndroid Build Coastguard Worker } 377*333d2b36SAndroid Build Coastguard Worker 378*333d2b36SAndroid Build Coastguard Worker component { 379*333d2b36SAndroid Build Coastguard Worker name: "bar", 380*333d2b36SAndroid Build Coastguard Worker } 381*333d2b36SAndroid Build Coastguard Worker 382*333d2b36SAndroid Build Coastguard Worker package_module { 383*333d2b36SAndroid Build Coastguard Worker name: "package", 384*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 385*333d2b36SAndroid Build Coastguard Worker install_deps: ["bar"], 386*333d2b36SAndroid Build Coastguard Worker } 387*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo"}) 388*333d2b36SAndroid Build Coastguard Worker} 389*333d2b36SAndroid Build Coastguard Worker 390*333d2b36SAndroid Build Coastguard Workerfunc TestPackagingWithSkipInstallDeps(t *testing.T) { 391*333d2b36SAndroid Build Coastguard Worker // package -[dep]-> foo -[dep]-> bar -[dep]-> baz 392*333d2b36SAndroid Build Coastguard Worker // Packaging should continue transitively through modules that are not installed. 393*333d2b36SAndroid Build Coastguard Worker config := testConfig{ 394*333d2b36SAndroid Build Coastguard Worker multiTarget: false, 395*333d2b36SAndroid Build Coastguard Worker depsCollectFirstTargetOnly: false, 396*333d2b36SAndroid Build Coastguard Worker } 397*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 398*333d2b36SAndroid Build Coastguard Worker ` 399*333d2b36SAndroid Build Coastguard Worker component { 400*333d2b36SAndroid Build Coastguard Worker name: "foo", 401*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 402*333d2b36SAndroid Build Coastguard Worker } 403*333d2b36SAndroid Build Coastguard Worker 404*333d2b36SAndroid Build Coastguard Worker component { 405*333d2b36SAndroid Build Coastguard Worker name: "bar", 406*333d2b36SAndroid Build Coastguard Worker deps: ["baz"], 407*333d2b36SAndroid Build Coastguard Worker skip_install: true, 408*333d2b36SAndroid Build Coastguard Worker } 409*333d2b36SAndroid Build Coastguard Worker 410*333d2b36SAndroid Build Coastguard Worker component { 411*333d2b36SAndroid Build Coastguard Worker name: "baz", 412*333d2b36SAndroid Build Coastguard Worker } 413*333d2b36SAndroid Build Coastguard Worker 414*333d2b36SAndroid Build Coastguard Worker package_module { 415*333d2b36SAndroid Build Coastguard Worker name: "package", 416*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 417*333d2b36SAndroid Build Coastguard Worker } 418*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar", "lib64/baz"}) 419*333d2b36SAndroid Build Coastguard Worker} 420*333d2b36SAndroid Build Coastguard Worker 421*333d2b36SAndroid Build Coastguard Workerfunc TestPackagingWithDepsCollectFirstTargetOnly(t *testing.T) { 422*333d2b36SAndroid Build Coastguard Worker config := testConfig{ 423*333d2b36SAndroid Build Coastguard Worker multiTarget: true, 424*333d2b36SAndroid Build Coastguard Worker depsCollectFirstTargetOnly: true, 425*333d2b36SAndroid Build Coastguard Worker } 426*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 427*333d2b36SAndroid Build Coastguard Worker ` 428*333d2b36SAndroid Build Coastguard Worker component { 429*333d2b36SAndroid Build Coastguard Worker name: "foo", 430*333d2b36SAndroid Build Coastguard Worker } 431*333d2b36SAndroid Build Coastguard Worker 432*333d2b36SAndroid Build Coastguard Worker package_module { 433*333d2b36SAndroid Build Coastguard Worker name: "package", 434*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 435*333d2b36SAndroid Build Coastguard Worker } 436*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo"}) 437*333d2b36SAndroid Build Coastguard Worker 438*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 439*333d2b36SAndroid Build Coastguard Worker ` 440*333d2b36SAndroid Build Coastguard Worker component { 441*333d2b36SAndroid Build Coastguard Worker name: "foo", 442*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 443*333d2b36SAndroid Build Coastguard Worker } 444*333d2b36SAndroid Build Coastguard Worker 445*333d2b36SAndroid Build Coastguard Worker component { 446*333d2b36SAndroid Build Coastguard Worker name: "bar", 447*333d2b36SAndroid Build Coastguard Worker } 448*333d2b36SAndroid Build Coastguard Worker 449*333d2b36SAndroid Build Coastguard Worker package_module { 450*333d2b36SAndroid Build Coastguard Worker name: "package", 451*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 452*333d2b36SAndroid Build Coastguard Worker } 453*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar"}) 454*333d2b36SAndroid Build Coastguard Worker 455*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 456*333d2b36SAndroid Build Coastguard Worker ` 457*333d2b36SAndroid Build Coastguard Worker component { 458*333d2b36SAndroid Build Coastguard Worker name: "foo", 459*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 460*333d2b36SAndroid Build Coastguard Worker } 461*333d2b36SAndroid Build Coastguard Worker 462*333d2b36SAndroid Build Coastguard Worker component { 463*333d2b36SAndroid Build Coastguard Worker name: "bar", 464*333d2b36SAndroid Build Coastguard Worker } 465*333d2b36SAndroid Build Coastguard Worker 466*333d2b36SAndroid Build Coastguard Worker package_module { 467*333d2b36SAndroid Build Coastguard Worker name: "package", 468*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 469*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 470*333d2b36SAndroid Build Coastguard Worker } 471*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar"}) 472*333d2b36SAndroid Build Coastguard Worker 473*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 474*333d2b36SAndroid Build Coastguard Worker ` 475*333d2b36SAndroid Build Coastguard Worker component { 476*333d2b36SAndroid Build Coastguard Worker name: "foo", 477*333d2b36SAndroid Build Coastguard Worker } 478*333d2b36SAndroid Build Coastguard Worker 479*333d2b36SAndroid Build Coastguard Worker component { 480*333d2b36SAndroid Build Coastguard Worker name: "bar", 481*333d2b36SAndroid Build Coastguard Worker compile_multilib: "32", 482*333d2b36SAndroid Build Coastguard Worker } 483*333d2b36SAndroid Build Coastguard Worker 484*333d2b36SAndroid Build Coastguard Worker package_module { 485*333d2b36SAndroid Build Coastguard Worker name: "package", 486*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 487*333d2b36SAndroid Build Coastguard Worker multilib: { 488*333d2b36SAndroid Build Coastguard Worker lib32: { 489*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 490*333d2b36SAndroid Build Coastguard Worker }, 491*333d2b36SAndroid Build Coastguard Worker }, 492*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 493*333d2b36SAndroid Build Coastguard Worker } 494*333d2b36SAndroid Build Coastguard Worker `, []string{"lib32/bar", "lib64/foo"}) 495*333d2b36SAndroid Build Coastguard Worker 496*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 497*333d2b36SAndroid Build Coastguard Worker ` 498*333d2b36SAndroid Build Coastguard Worker component { 499*333d2b36SAndroid Build Coastguard Worker name: "foo", 500*333d2b36SAndroid Build Coastguard Worker } 501*333d2b36SAndroid Build Coastguard Worker 502*333d2b36SAndroid Build Coastguard Worker component { 503*333d2b36SAndroid Build Coastguard Worker name: "bar", 504*333d2b36SAndroid Build Coastguard Worker } 505*333d2b36SAndroid Build Coastguard Worker 506*333d2b36SAndroid Build Coastguard Worker package_module { 507*333d2b36SAndroid Build Coastguard Worker name: "package", 508*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 509*333d2b36SAndroid Build Coastguard Worker multilib: { 510*333d2b36SAndroid Build Coastguard Worker both: { 511*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 512*333d2b36SAndroid Build Coastguard Worker }, 513*333d2b36SAndroid Build Coastguard Worker }, 514*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 515*333d2b36SAndroid Build Coastguard Worker } 516*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib32/bar", "lib64/bar"}) 517*333d2b36SAndroid Build Coastguard Worker 518*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, 519*333d2b36SAndroid Build Coastguard Worker ` 520*333d2b36SAndroid Build Coastguard Worker component { 521*333d2b36SAndroid Build Coastguard Worker name: "foo", 522*333d2b36SAndroid Build Coastguard Worker } 523*333d2b36SAndroid Build Coastguard Worker 524*333d2b36SAndroid Build Coastguard Worker component { 525*333d2b36SAndroid Build Coastguard Worker name: "bar", 526*333d2b36SAndroid Build Coastguard Worker } 527*333d2b36SAndroid Build Coastguard Worker 528*333d2b36SAndroid Build Coastguard Worker component { 529*333d2b36SAndroid Build Coastguard Worker name: "baz", 530*333d2b36SAndroid Build Coastguard Worker } 531*333d2b36SAndroid Build Coastguard Worker 532*333d2b36SAndroid Build Coastguard Worker package_module { 533*333d2b36SAndroid Build Coastguard Worker name: "package", 534*333d2b36SAndroid Build Coastguard Worker deps: ["foo"], 535*333d2b36SAndroid Build Coastguard Worker arch: { 536*333d2b36SAndroid Build Coastguard Worker arm64: { 537*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 538*333d2b36SAndroid Build Coastguard Worker }, 539*333d2b36SAndroid Build Coastguard Worker x86_64: { 540*333d2b36SAndroid Build Coastguard Worker deps: ["baz"], 541*333d2b36SAndroid Build Coastguard Worker }, 542*333d2b36SAndroid Build Coastguard Worker }, 543*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", 544*333d2b36SAndroid Build Coastguard Worker } 545*333d2b36SAndroid Build Coastguard Worker `, []string{"lib64/foo", "lib64/bar"}) 546*333d2b36SAndroid Build Coastguard Worker} 547*333d2b36SAndroid Build Coastguard Worker 548*333d2b36SAndroid Build Coastguard Workerfunc TestDebuggableDeps(t *testing.T) { 549*333d2b36SAndroid Build Coastguard Worker bp := ` 550*333d2b36SAndroid Build Coastguard Worker component { 551*333d2b36SAndroid Build Coastguard Worker name: "foo", 552*333d2b36SAndroid Build Coastguard Worker } 553*333d2b36SAndroid Build Coastguard Worker 554*333d2b36SAndroid Build Coastguard Worker component { 555*333d2b36SAndroid Build Coastguard Worker name: "bar", 556*333d2b36SAndroid Build Coastguard Worker deps: ["baz"], 557*333d2b36SAndroid Build Coastguard Worker } 558*333d2b36SAndroid Build Coastguard Worker 559*333d2b36SAndroid Build Coastguard Worker component { 560*333d2b36SAndroid Build Coastguard Worker name: "baz", 561*333d2b36SAndroid Build Coastguard Worker } 562*333d2b36SAndroid Build Coastguard Worker 563*333d2b36SAndroid Build Coastguard Worker package_module { 564*333d2b36SAndroid Build Coastguard Worker name: "package", 565*333d2b36SAndroid Build Coastguard Worker deps: ["foo"] + select(product_variable("debuggable"), { 566*333d2b36SAndroid Build Coastguard Worker true: ["bar"], 567*333d2b36SAndroid Build Coastguard Worker default: [], 568*333d2b36SAndroid Build Coastguard Worker }), 569*333d2b36SAndroid Build Coastguard Worker }` 570*333d2b36SAndroid Build Coastguard Worker testcases := []struct { 571*333d2b36SAndroid Build Coastguard Worker debuggable bool 572*333d2b36SAndroid Build Coastguard Worker expected []string 573*333d2b36SAndroid Build Coastguard Worker }{ 574*333d2b36SAndroid Build Coastguard Worker { 575*333d2b36SAndroid Build Coastguard Worker debuggable: true, 576*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo", "lib64/bar", "lib64/baz"}, 577*333d2b36SAndroid Build Coastguard Worker }, 578*333d2b36SAndroid Build Coastguard Worker { 579*333d2b36SAndroid Build Coastguard Worker debuggable: false, 580*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo"}, 581*333d2b36SAndroid Build Coastguard Worker }, 582*333d2b36SAndroid Build Coastguard Worker } 583*333d2b36SAndroid Build Coastguard Worker for _, tc := range testcases { 584*333d2b36SAndroid Build Coastguard Worker config := testConfig{ 585*333d2b36SAndroid Build Coastguard Worker debuggable: tc.debuggable, 586*333d2b36SAndroid Build Coastguard Worker } 587*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, bp, tc.expected) 588*333d2b36SAndroid Build Coastguard Worker } 589*333d2b36SAndroid Build Coastguard Worker} 590*333d2b36SAndroid Build Coastguard Worker 591*333d2b36SAndroid Build Coastguard Workerfunc TestPrefer32Deps(t *testing.T) { 592*333d2b36SAndroid Build Coastguard Worker bpTemplate := ` 593*333d2b36SAndroid Build Coastguard Worker component { 594*333d2b36SAndroid Build Coastguard Worker name: "foo", 595*333d2b36SAndroid Build Coastguard Worker compile_multilib: "both", // not needed but for clarity 596*333d2b36SAndroid Build Coastguard Worker } 597*333d2b36SAndroid Build Coastguard Worker 598*333d2b36SAndroid Build Coastguard Worker component { 599*333d2b36SAndroid Build Coastguard Worker name: "foo_32only", 600*333d2b36SAndroid Build Coastguard Worker compile_multilib: "prefer32", 601*333d2b36SAndroid Build Coastguard Worker } 602*333d2b36SAndroid Build Coastguard Worker 603*333d2b36SAndroid Build Coastguard Worker component { 604*333d2b36SAndroid Build Coastguard Worker name: "foo_64only", 605*333d2b36SAndroid Build Coastguard Worker compile_multilib: "64", 606*333d2b36SAndroid Build Coastguard Worker } 607*333d2b36SAndroid Build Coastguard Worker 608*333d2b36SAndroid Build Coastguard Worker package_module { 609*333d2b36SAndroid Build Coastguard Worker name: "package", 610*333d2b36SAndroid Build Coastguard Worker compile_multilib: "%COMPILE_MULTILIB%", 611*333d2b36SAndroid Build Coastguard Worker multilib: { 612*333d2b36SAndroid Build Coastguard Worker prefer32: { 613*333d2b36SAndroid Build Coastguard Worker deps: %DEPS%, 614*333d2b36SAndroid Build Coastguard Worker }, 615*333d2b36SAndroid Build Coastguard Worker }, 616*333d2b36SAndroid Build Coastguard Worker } 617*333d2b36SAndroid Build Coastguard Worker ` 618*333d2b36SAndroid Build Coastguard Worker 619*333d2b36SAndroid Build Coastguard Worker testcases := []struct { 620*333d2b36SAndroid Build Coastguard Worker compileMultilib string 621*333d2b36SAndroid Build Coastguard Worker deps []string 622*333d2b36SAndroid Build Coastguard Worker expected []string 623*333d2b36SAndroid Build Coastguard Worker }{ 624*333d2b36SAndroid Build Coastguard Worker { 625*333d2b36SAndroid Build Coastguard Worker compileMultilib: "first", 626*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo", "foo_64only"}, 627*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo", "lib64/foo_64only"}, 628*333d2b36SAndroid Build Coastguard Worker }, 629*333d2b36SAndroid Build Coastguard Worker { 630*333d2b36SAndroid Build Coastguard Worker compileMultilib: "64", 631*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo", "foo_64only"}, 632*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo", "lib64/foo_64only"}, 633*333d2b36SAndroid Build Coastguard Worker }, 634*333d2b36SAndroid Build Coastguard Worker { 635*333d2b36SAndroid Build Coastguard Worker compileMultilib: "32", 636*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo", "foo_32only"}, 637*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib32/foo", "lib32/foo_32only"}, 638*333d2b36SAndroid Build Coastguard Worker }, 639*333d2b36SAndroid Build Coastguard Worker { 640*333d2b36SAndroid Build Coastguard Worker compileMultilib: "both", 641*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo", "foo_32only", "foo_64only"}, 642*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib32/foo", "lib32/foo_32only", "lib64/foo_64only"}, 643*333d2b36SAndroid Build Coastguard Worker }, 644*333d2b36SAndroid Build Coastguard Worker } 645*333d2b36SAndroid Build Coastguard Worker for _, tc := range testcases { 646*333d2b36SAndroid Build Coastguard Worker config := testConfig{ 647*333d2b36SAndroid Build Coastguard Worker multiTarget: true, 648*333d2b36SAndroid Build Coastguard Worker depsCollectFirstTargetOnly: true, 649*333d2b36SAndroid Build Coastguard Worker } 650*333d2b36SAndroid Build Coastguard Worker bp := strings.Replace(bpTemplate, "%COMPILE_MULTILIB%", tc.compileMultilib, -1) 651*333d2b36SAndroid Build Coastguard Worker bp = strings.Replace(bp, "%DEPS%", `["`+strings.Join(tc.deps, `", "`)+`"]`, -1) 652*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, bp, tc.expected) 653*333d2b36SAndroid Build Coastguard Worker } 654*333d2b36SAndroid Build Coastguard Worker} 655*333d2b36SAndroid Build Coastguard Worker 656*333d2b36SAndroid Build Coastguard Workerfunc TestOverrides(t *testing.T) { 657*333d2b36SAndroid Build Coastguard Worker bpTemplate := ` 658*333d2b36SAndroid Build Coastguard Worker component { 659*333d2b36SAndroid Build Coastguard Worker name: "foo", 660*333d2b36SAndroid Build Coastguard Worker deps: ["bar"], 661*333d2b36SAndroid Build Coastguard Worker } 662*333d2b36SAndroid Build Coastguard Worker 663*333d2b36SAndroid Build Coastguard Worker component { 664*333d2b36SAndroid Build Coastguard Worker name: "bar", 665*333d2b36SAndroid Build Coastguard Worker } 666*333d2b36SAndroid Build Coastguard Worker 667*333d2b36SAndroid Build Coastguard Worker component { 668*333d2b36SAndroid Build Coastguard Worker name: "bar_override", 669*333d2b36SAndroid Build Coastguard Worker overrides: ["bar"], 670*333d2b36SAndroid Build Coastguard Worker } 671*333d2b36SAndroid Build Coastguard Worker 672*333d2b36SAndroid Build Coastguard Worker component { 673*333d2b36SAndroid Build Coastguard Worker name: "baz", 674*333d2b36SAndroid Build Coastguard Worker deps: ["bar_override"], 675*333d2b36SAndroid Build Coastguard Worker } 676*333d2b36SAndroid Build Coastguard Worker 677*333d2b36SAndroid Build Coastguard Worker package_module { 678*333d2b36SAndroid Build Coastguard Worker name: "package", 679*333d2b36SAndroid Build Coastguard Worker deps: %DEPS%, 680*333d2b36SAndroid Build Coastguard Worker } 681*333d2b36SAndroid Build Coastguard Worker ` 682*333d2b36SAndroid Build Coastguard Worker testcases := []struct { 683*333d2b36SAndroid Build Coastguard Worker deps []string 684*333d2b36SAndroid Build Coastguard Worker expected []string 685*333d2b36SAndroid Build Coastguard Worker }{ 686*333d2b36SAndroid Build Coastguard Worker { 687*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo"}, 688*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo", "lib64/bar"}, 689*333d2b36SAndroid Build Coastguard Worker }, 690*333d2b36SAndroid Build Coastguard Worker { 691*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo", "bar_override"}, 692*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo", "lib64/bar_override"}, 693*333d2b36SAndroid Build Coastguard Worker }, 694*333d2b36SAndroid Build Coastguard Worker { 695*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo", "bar", "bar_override"}, 696*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo", "lib64/bar_override"}, 697*333d2b36SAndroid Build Coastguard Worker }, 698*333d2b36SAndroid Build Coastguard Worker { 699*333d2b36SAndroid Build Coastguard Worker deps: []string{"bar", "bar_override"}, 700*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/bar_override"}, 701*333d2b36SAndroid Build Coastguard Worker }, 702*333d2b36SAndroid Build Coastguard Worker { 703*333d2b36SAndroid Build Coastguard Worker deps: []string{"foo", "baz"}, 704*333d2b36SAndroid Build Coastguard Worker expected: []string{"lib64/foo", "lib64/baz", "lib64/bar_override"}, 705*333d2b36SAndroid Build Coastguard Worker }, 706*333d2b36SAndroid Build Coastguard Worker } 707*333d2b36SAndroid Build Coastguard Worker for _, tc := range testcases { 708*333d2b36SAndroid Build Coastguard Worker config := testConfig{ 709*333d2b36SAndroid Build Coastguard Worker multiTarget: true, 710*333d2b36SAndroid Build Coastguard Worker depsCollectFirstTargetOnly: false, 711*333d2b36SAndroid Build Coastguard Worker } 712*333d2b36SAndroid Build Coastguard Worker bp := strings.Replace(bpTemplate, "%DEPS%", `["`+strings.Join(tc.deps, `", "`)+`"]`, -1) 713*333d2b36SAndroid Build Coastguard Worker runPackagingTest(t, config, bp, tc.expected) 714*333d2b36SAndroid Build Coastguard Worker } 715*333d2b36SAndroid Build Coastguard Worker} 716