1*333d2b36SAndroid Build Coastguard Worker// Copyright 2019 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 "reflect" 19*333d2b36SAndroid Build Coastguard Worker "testing" 20*333d2b36SAndroid Build Coastguard Worker 21*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 22*333d2b36SAndroid Build Coastguard Worker "android/soong/cc" 23*333d2b36SAndroid Build Coastguard Worker) 24*333d2b36SAndroid Build Coastguard Worker 25*333d2b36SAndroid Build Coastguard Workerfunc TestRequired(t *testing.T) { 26*333d2b36SAndroid Build Coastguard Worker ctx, _ := testJava(t, ` 27*333d2b36SAndroid Build Coastguard Worker java_library { 28*333d2b36SAndroid Build Coastguard Worker name: "foo", 29*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 30*333d2b36SAndroid Build Coastguard Worker required: ["libfoo"], 31*333d2b36SAndroid Build Coastguard Worker } 32*333d2b36SAndroid Build Coastguard Worker `) 33*333d2b36SAndroid Build Coastguard Worker 34*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests("foo", "android_common").Module() 35*333d2b36SAndroid Build Coastguard Worker entries := android.AndroidMkEntriesForTest(t, ctx, mod)[0] 36*333d2b36SAndroid Build Coastguard Worker 37*333d2b36SAndroid Build Coastguard Worker expected := []string{"libfoo"} 38*333d2b36SAndroid Build Coastguard Worker actual := entries.EntryMap["LOCAL_REQUIRED_MODULES"] 39*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(expected, actual) { 40*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected required modules - expected: %q, actual: %q", expected, actual) 41*333d2b36SAndroid Build Coastguard Worker } 42*333d2b36SAndroid Build Coastguard Worker} 43*333d2b36SAndroid Build Coastguard Worker 44*333d2b36SAndroid Build Coastguard Workerfunc TestHostdex(t *testing.T) { 45*333d2b36SAndroid Build Coastguard Worker ctx, _ := testJava(t, ` 46*333d2b36SAndroid Build Coastguard Worker java_library { 47*333d2b36SAndroid Build Coastguard Worker name: "foo", 48*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 49*333d2b36SAndroid Build Coastguard Worker hostdex: true, 50*333d2b36SAndroid Build Coastguard Worker } 51*333d2b36SAndroid Build Coastguard Worker `) 52*333d2b36SAndroid Build Coastguard Worker 53*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests("foo", "android_common").Module() 54*333d2b36SAndroid Build Coastguard Worker entriesList := android.AndroidMkEntriesForTest(t, ctx, mod) 55*333d2b36SAndroid Build Coastguard Worker if len(entriesList) != 2 { 56*333d2b36SAndroid Build Coastguard Worker t.Errorf("two entries are expected, but got %d", len(entriesList)) 57*333d2b36SAndroid Build Coastguard Worker } 58*333d2b36SAndroid Build Coastguard Worker 59*333d2b36SAndroid Build Coastguard Worker mainEntries := &entriesList[0] 60*333d2b36SAndroid Build Coastguard Worker expected := []string{"foo"} 61*333d2b36SAndroid Build Coastguard Worker actual := mainEntries.EntryMap["LOCAL_MODULE"] 62*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(expected, actual) { 63*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected module name - expected: %q, actual: %q", expected, actual) 64*333d2b36SAndroid Build Coastguard Worker } 65*333d2b36SAndroid Build Coastguard Worker 66*333d2b36SAndroid Build Coastguard Worker subEntries := &entriesList[1] 67*333d2b36SAndroid Build Coastguard Worker expected = []string{"foo-hostdex"} 68*333d2b36SAndroid Build Coastguard Worker actual = subEntries.EntryMap["LOCAL_MODULE"] 69*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(expected, actual) { 70*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected module name - expected: %q, actual: %q", expected, actual) 71*333d2b36SAndroid Build Coastguard Worker } 72*333d2b36SAndroid Build Coastguard Worker} 73*333d2b36SAndroid Build Coastguard Worker 74*333d2b36SAndroid Build Coastguard Workerfunc TestHostdexRequired(t *testing.T) { 75*333d2b36SAndroid Build Coastguard Worker ctx, _ := testJava(t, ` 76*333d2b36SAndroid Build Coastguard Worker java_library { 77*333d2b36SAndroid Build Coastguard Worker name: "foo", 78*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 79*333d2b36SAndroid Build Coastguard Worker hostdex: true, 80*333d2b36SAndroid Build Coastguard Worker required: ["libfoo"], 81*333d2b36SAndroid Build Coastguard Worker } 82*333d2b36SAndroid Build Coastguard Worker `) 83*333d2b36SAndroid Build Coastguard Worker 84*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests("foo", "android_common").Module() 85*333d2b36SAndroid Build Coastguard Worker entriesList := android.AndroidMkEntriesForTest(t, ctx, mod) 86*333d2b36SAndroid Build Coastguard Worker if len(entriesList) != 2 { 87*333d2b36SAndroid Build Coastguard Worker t.Errorf("two entries are expected, but got %d", len(entriesList)) 88*333d2b36SAndroid Build Coastguard Worker } 89*333d2b36SAndroid Build Coastguard Worker 90*333d2b36SAndroid Build Coastguard Worker mainEntries := &entriesList[0] 91*333d2b36SAndroid Build Coastguard Worker expected := []string{"libfoo"} 92*333d2b36SAndroid Build Coastguard Worker actual := mainEntries.EntryMap["LOCAL_REQUIRED_MODULES"] 93*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(expected, actual) { 94*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected required modules - expected: %q, actual: %q", expected, actual) 95*333d2b36SAndroid Build Coastguard Worker } 96*333d2b36SAndroid Build Coastguard Worker 97*333d2b36SAndroid Build Coastguard Worker subEntries := &entriesList[1] 98*333d2b36SAndroid Build Coastguard Worker expected = []string{"libfoo"} 99*333d2b36SAndroid Build Coastguard Worker actual = subEntries.EntryMap["LOCAL_REQUIRED_MODULES"] 100*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(expected, actual) { 101*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected required modules - expected: %q, actual: %q", expected, actual) 102*333d2b36SAndroid Build Coastguard Worker } 103*333d2b36SAndroid Build Coastguard Worker} 104*333d2b36SAndroid Build Coastguard Worker 105*333d2b36SAndroid Build Coastguard Workerfunc TestHostdexSpecificRequired(t *testing.T) { 106*333d2b36SAndroid Build Coastguard Worker ctx, _ := testJava(t, ` 107*333d2b36SAndroid Build Coastguard Worker java_library { 108*333d2b36SAndroid Build Coastguard Worker name: "foo", 109*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 110*333d2b36SAndroid Build Coastguard Worker hostdex: true, 111*333d2b36SAndroid Build Coastguard Worker target: { 112*333d2b36SAndroid Build Coastguard Worker hostdex: { 113*333d2b36SAndroid Build Coastguard Worker required: ["libfoo"], 114*333d2b36SAndroid Build Coastguard Worker }, 115*333d2b36SAndroid Build Coastguard Worker }, 116*333d2b36SAndroid Build Coastguard Worker } 117*333d2b36SAndroid Build Coastguard Worker `) 118*333d2b36SAndroid Build Coastguard Worker 119*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests("foo", "android_common").Module() 120*333d2b36SAndroid Build Coastguard Worker entriesList := android.AndroidMkEntriesForTest(t, ctx, mod) 121*333d2b36SAndroid Build Coastguard Worker if len(entriesList) != 2 { 122*333d2b36SAndroid Build Coastguard Worker t.Errorf("two entries are expected, but got %d", len(entriesList)) 123*333d2b36SAndroid Build Coastguard Worker } 124*333d2b36SAndroid Build Coastguard Worker 125*333d2b36SAndroid Build Coastguard Worker mainEntries := &entriesList[0] 126*333d2b36SAndroid Build Coastguard Worker if r, ok := mainEntries.EntryMap["LOCAL_REQUIRED_MODULES"]; ok { 127*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected required modules: %q", r) 128*333d2b36SAndroid Build Coastguard Worker } 129*333d2b36SAndroid Build Coastguard Worker 130*333d2b36SAndroid Build Coastguard Worker subEntries := &entriesList[1] 131*333d2b36SAndroid Build Coastguard Worker expected := []string{"libfoo"} 132*333d2b36SAndroid Build Coastguard Worker actual := subEntries.EntryMap["LOCAL_REQUIRED_MODULES"] 133*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(expected, actual) { 134*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected required modules - expected: %q, actual: %q", expected, actual) 135*333d2b36SAndroid Build Coastguard Worker } 136*333d2b36SAndroid Build Coastguard Worker} 137*333d2b36SAndroid Build Coastguard Worker 138*333d2b36SAndroid Build Coastguard Workerfunc TestJavaSdkLibrary_RequireXmlPermissionFile(t *testing.T) { 139*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 140*333d2b36SAndroid Build Coastguard Worker prepareForJavaTest, 141*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithJavaSdkLibraryFiles, 142*333d2b36SAndroid Build Coastguard Worker FixtureWithLastReleaseApis("foo-shared_library", "foo-no_shared_library"), 143*333d2b36SAndroid Build Coastguard Worker ).RunTestWithBp(t, ` 144*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 145*333d2b36SAndroid Build Coastguard Worker name: "foo-shared_library", 146*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 147*333d2b36SAndroid Build Coastguard Worker } 148*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 149*333d2b36SAndroid Build Coastguard Worker name: "foo-no_shared_library", 150*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 151*333d2b36SAndroid Build Coastguard Worker shared_library: false, 152*333d2b36SAndroid Build Coastguard Worker } 153*333d2b36SAndroid Build Coastguard Worker `) 154*333d2b36SAndroid Build Coastguard Worker 155*333d2b36SAndroid Build Coastguard Worker // Verify the existence of internal modules 156*333d2b36SAndroid Build Coastguard Worker result.ModuleForTests("foo-shared_library.xml", "android_common") 157*333d2b36SAndroid Build Coastguard Worker 158*333d2b36SAndroid Build Coastguard Worker testCases := []struct { 159*333d2b36SAndroid Build Coastguard Worker moduleName string 160*333d2b36SAndroid Build Coastguard Worker expected []string 161*333d2b36SAndroid Build Coastguard Worker }{ 162*333d2b36SAndroid Build Coastguard Worker {"foo-shared_library", []string{"foo-shared_library.impl", "foo-shared_library.xml"}}, 163*333d2b36SAndroid Build Coastguard Worker {"foo-no_shared_library", []string{"foo-no_shared_library.impl"}}, 164*333d2b36SAndroid Build Coastguard Worker } 165*333d2b36SAndroid Build Coastguard Worker for _, tc := range testCases { 166*333d2b36SAndroid Build Coastguard Worker mod := result.ModuleForTests(tc.moduleName, "android_common").Module() 167*333d2b36SAndroid Build Coastguard Worker entries := android.AndroidMkEntriesForTest(t, result.TestContext, mod)[0] 168*333d2b36SAndroid Build Coastguard Worker actual := entries.EntryMap["LOCAL_REQUIRED_MODULES"] 169*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(tc.expected, actual) { 170*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected required modules - expected: %q, actual: %q", tc.expected, actual) 171*333d2b36SAndroid Build Coastguard Worker } 172*333d2b36SAndroid Build Coastguard Worker } 173*333d2b36SAndroid Build Coastguard Worker} 174*333d2b36SAndroid Build Coastguard Worker 175*333d2b36SAndroid Build Coastguard Workerfunc TestImportSoongDexJar(t *testing.T) { 176*333d2b36SAndroid Build Coastguard Worker result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, ` 177*333d2b36SAndroid Build Coastguard Worker java_import { 178*333d2b36SAndroid Build Coastguard Worker name: "my-java-import", 179*333d2b36SAndroid Build Coastguard Worker jars: ["a.jar"], 180*333d2b36SAndroid Build Coastguard Worker prefer: true, 181*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 182*333d2b36SAndroid Build Coastguard Worker } 183*333d2b36SAndroid Build Coastguard Worker `) 184*333d2b36SAndroid Build Coastguard Worker 185*333d2b36SAndroid Build Coastguard Worker mod := result.Module("my-java-import", "android_common") 186*333d2b36SAndroid Build Coastguard Worker entries := android.AndroidMkEntriesForTest(t, result.TestContext, mod)[0] 187*333d2b36SAndroid Build Coastguard Worker expectedSoongDexJar := "out/soong/.intermediates/my-java-import/android_common/dex/my-java-import.jar" 188*333d2b36SAndroid Build Coastguard Worker actualSoongDexJar := entries.EntryMap["LOCAL_SOONG_DEX_JAR"] 189*333d2b36SAndroid Build Coastguard Worker 190*333d2b36SAndroid Build Coastguard Worker android.AssertStringPathsRelativeToTopEquals(t, "LOCAL_SOONG_DEX_JAR", result.Config, []string{expectedSoongDexJar}, actualSoongDexJar) 191*333d2b36SAndroid Build Coastguard Worker} 192*333d2b36SAndroid Build Coastguard Worker 193*333d2b36SAndroid Build Coastguard Workerfunc TestAndroidTestHelperApp_LocalDisableTestConfig(t *testing.T) { 194*333d2b36SAndroid Build Coastguard Worker ctx, _ := testJava(t, ` 195*333d2b36SAndroid Build Coastguard Worker android_test_helper_app { 196*333d2b36SAndroid Build Coastguard Worker name: "foo", 197*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 198*333d2b36SAndroid Build Coastguard Worker } 199*333d2b36SAndroid Build Coastguard Worker `) 200*333d2b36SAndroid Build Coastguard Worker 201*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests("foo", "android_common").Module() 202*333d2b36SAndroid Build Coastguard Worker entries := android.AndroidMkEntriesForTest(t, ctx, mod)[0] 203*333d2b36SAndroid Build Coastguard Worker 204*333d2b36SAndroid Build Coastguard Worker expected := []string{"true"} 205*333d2b36SAndroid Build Coastguard Worker actual := entries.EntryMap["LOCAL_DISABLE_TEST_CONFIG"] 206*333d2b36SAndroid Build Coastguard Worker if !reflect.DeepEqual(expected, actual) { 207*333d2b36SAndroid Build Coastguard Worker t.Errorf("Unexpected flag value - expected: %q, actual: %q", expected, actual) 208*333d2b36SAndroid Build Coastguard Worker } 209*333d2b36SAndroid Build Coastguard Worker} 210*333d2b36SAndroid Build Coastguard Worker 211*333d2b36SAndroid Build Coastguard Workerfunc TestGetOverriddenPackages(t *testing.T) { 212*333d2b36SAndroid Build Coastguard Worker ctx, _ := testJava( 213*333d2b36SAndroid Build Coastguard Worker t, ` 214*333d2b36SAndroid Build Coastguard Worker android_app { 215*333d2b36SAndroid Build Coastguard Worker name: "foo", 216*333d2b36SAndroid Build Coastguard Worker srcs: ["a.java"], 217*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 218*333d2b36SAndroid Build Coastguard Worker overrides: ["qux"] 219*333d2b36SAndroid Build Coastguard Worker } 220*333d2b36SAndroid Build Coastguard Worker 221*333d2b36SAndroid Build Coastguard Worker override_android_app { 222*333d2b36SAndroid Build Coastguard Worker name: "foo_override", 223*333d2b36SAndroid Build Coastguard Worker base: "foo", 224*333d2b36SAndroid Build Coastguard Worker overrides: ["bar"] 225*333d2b36SAndroid Build Coastguard Worker } 226*333d2b36SAndroid Build Coastguard Worker `) 227*333d2b36SAndroid Build Coastguard Worker 228*333d2b36SAndroid Build Coastguard Worker expectedVariants := []struct { 229*333d2b36SAndroid Build Coastguard Worker name string 230*333d2b36SAndroid Build Coastguard Worker moduleName string 231*333d2b36SAndroid Build Coastguard Worker variantName string 232*333d2b36SAndroid Build Coastguard Worker overrides []string 233*333d2b36SAndroid Build Coastguard Worker }{ 234*333d2b36SAndroid Build Coastguard Worker { 235*333d2b36SAndroid Build Coastguard Worker name: "foo", 236*333d2b36SAndroid Build Coastguard Worker moduleName: "foo", 237*333d2b36SAndroid Build Coastguard Worker variantName: "android_common", 238*333d2b36SAndroid Build Coastguard Worker overrides: []string{"qux"}, 239*333d2b36SAndroid Build Coastguard Worker }, 240*333d2b36SAndroid Build Coastguard Worker { 241*333d2b36SAndroid Build Coastguard Worker name: "foo", 242*333d2b36SAndroid Build Coastguard Worker moduleName: "foo_override", 243*333d2b36SAndroid Build Coastguard Worker variantName: "android_common_foo_override", 244*333d2b36SAndroid Build Coastguard Worker overrides: []string{"bar", "foo"}, 245*333d2b36SAndroid Build Coastguard Worker }, 246*333d2b36SAndroid Build Coastguard Worker } 247*333d2b36SAndroid Build Coastguard Worker 248*333d2b36SAndroid Build Coastguard Worker for _, expected := range expectedVariants { 249*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests(expected.name, expected.variantName).Module() 250*333d2b36SAndroid Build Coastguard Worker entries := android.AndroidMkEntriesForTest(t, ctx, mod)[0] 251*333d2b36SAndroid Build Coastguard Worker actual := entries.EntryMap["LOCAL_OVERRIDES_PACKAGES"] 252*333d2b36SAndroid Build Coastguard Worker 253*333d2b36SAndroid Build Coastguard Worker android.AssertDeepEquals(t, "overrides property", expected.overrides, actual) 254*333d2b36SAndroid Build Coastguard Worker } 255*333d2b36SAndroid Build Coastguard Worker} 256*333d2b36SAndroid Build Coastguard Worker 257*333d2b36SAndroid Build Coastguard Workerfunc TestJniAsRequiredDeps(t *testing.T) { 258*333d2b36SAndroid Build Coastguard Worker ctx := android.GroupFixturePreparers( 259*333d2b36SAndroid Build Coastguard Worker PrepareForTestWithJavaDefaultModules, 260*333d2b36SAndroid Build Coastguard Worker cc.PrepareForTestWithCcDefaultModules, 261*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithAndroidMk, 262*333d2b36SAndroid Build Coastguard Worker ).RunTestWithBp(t, ` 263*333d2b36SAndroid Build Coastguard Worker android_app { 264*333d2b36SAndroid Build Coastguard Worker name: "app", 265*333d2b36SAndroid Build Coastguard Worker jni_libs: ["libjni"], 266*333d2b36SAndroid Build Coastguard Worker platform_apis: true, 267*333d2b36SAndroid Build Coastguard Worker } 268*333d2b36SAndroid Build Coastguard Worker 269*333d2b36SAndroid Build Coastguard Worker android_app { 270*333d2b36SAndroid Build Coastguard Worker name: "app_embedded", 271*333d2b36SAndroid Build Coastguard Worker jni_libs: ["libjni"], 272*333d2b36SAndroid Build Coastguard Worker platform_apis: true, 273*333d2b36SAndroid Build Coastguard Worker use_embedded_native_libs: true, 274*333d2b36SAndroid Build Coastguard Worker } 275*333d2b36SAndroid Build Coastguard Worker 276*333d2b36SAndroid Build Coastguard Worker cc_library { 277*333d2b36SAndroid Build Coastguard Worker name: "libjni", 278*333d2b36SAndroid Build Coastguard Worker system_shared_libs: [], 279*333d2b36SAndroid Build Coastguard Worker stl: "none", 280*333d2b36SAndroid Build Coastguard Worker } 281*333d2b36SAndroid Build Coastguard Worker `) 282*333d2b36SAndroid Build Coastguard Worker 283*333d2b36SAndroid Build Coastguard Worker testcases := []struct { 284*333d2b36SAndroid Build Coastguard Worker name string 285*333d2b36SAndroid Build Coastguard Worker expected []string 286*333d2b36SAndroid Build Coastguard Worker }{ 287*333d2b36SAndroid Build Coastguard Worker { 288*333d2b36SAndroid Build Coastguard Worker name: "app", 289*333d2b36SAndroid Build Coastguard Worker expected: []string{"libjni:64"}, 290*333d2b36SAndroid Build Coastguard Worker }, 291*333d2b36SAndroid Build Coastguard Worker { 292*333d2b36SAndroid Build Coastguard Worker name: "app_embedded", 293*333d2b36SAndroid Build Coastguard Worker expected: nil, 294*333d2b36SAndroid Build Coastguard Worker }, 295*333d2b36SAndroid Build Coastguard Worker } 296*333d2b36SAndroid Build Coastguard Worker 297*333d2b36SAndroid Build Coastguard Worker for _, tc := range testcases { 298*333d2b36SAndroid Build Coastguard Worker mod := ctx.ModuleForTests(tc.name, "android_common").Module() 299*333d2b36SAndroid Build Coastguard Worker entries := android.AndroidMkEntriesForTest(t, ctx.TestContext, mod)[0] 300*333d2b36SAndroid Build Coastguard Worker required := entries.EntryMap["LOCAL_REQUIRED_MODULES"] 301*333d2b36SAndroid Build Coastguard Worker android.AssertDeepEquals(t, "unexpected required deps", tc.expected, required) 302*333d2b36SAndroid Build Coastguard Worker } 303*333d2b36SAndroid Build Coastguard Worker} 304