xref: /aosp_15_r20/build/soong/java/androidmk_test.go (revision 333d2b3687b3a337dbcca9d65000bca186795e39)
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