Add allowed-deps tests
These tests capture - track updatable apexes - do not track apex-only modules - track transitive deps - track external deps (with mark) Bug: 274041915 Test: m nothing Change-Id: I629015f5aa4a1a7627d0ba6d92fd42bb99c96287
This commit is contained in:
@@ -1980,6 +1980,93 @@ func TestApexMinSdkVersion_InVendorApex(t *testing.T) {
|
||||
android.AssertStringDoesContain(t, "cflags", cflags, "-target aarch64-linux-android29")
|
||||
}
|
||||
|
||||
func TestTrackAllowedDeps(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
updatable: true,
|
||||
native_shared_libs: [
|
||||
"mylib",
|
||||
"yourlib",
|
||||
],
|
||||
min_sdk_version: "29",
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "myapex2",
|
||||
key: "myapex.key",
|
||||
updatable: false,
|
||||
native_shared_libs: ["yourlib"],
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "mylib",
|
||||
srcs: ["mylib.cpp"],
|
||||
shared_libs: ["libbar"],
|
||||
min_sdk_version: "29",
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libbar",
|
||||
stubs: { versions: ["29", "30"] },
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "yourlib",
|
||||
srcs: ["mylib.cpp"],
|
||||
min_sdk_version: "29",
|
||||
apex_available: ["myapex", "myapex2", "//apex_available:platform"],
|
||||
}
|
||||
`, withFiles(android.MockFS{
|
||||
"packages/modules/common/build/allowed_deps.txt": nil,
|
||||
}))
|
||||
|
||||
depsinfo := ctx.SingletonForTests("apex_depsinfo_singleton")
|
||||
inputs := depsinfo.Rule("generateApexDepsInfoFilesRule").BuildParams.Inputs.Strings()
|
||||
android.AssertStringListContains(t, "updatable myapex should generate depsinfo file", inputs,
|
||||
"out/soong/.intermediates/myapex/android_common_myapex_image/depsinfo/flatlist.txt")
|
||||
android.AssertStringListDoesNotContain(t, "non-updatable myapex2 should not generate depsinfo file", inputs,
|
||||
"out/soong/.intermediates/myapex2/android_common_myapex2_image/depsinfo/flatlist.txt")
|
||||
|
||||
myapex := ctx.ModuleForTests("myapex", "android_common_myapex_image")
|
||||
flatlist := strings.Split(myapex.Output("depsinfo/flatlist.txt").BuildParams.Args["content"], "\\n")
|
||||
android.AssertStringListContains(t, "deps with stubs should be tracked in depsinfo as external dep",
|
||||
flatlist, "libbar(minSdkVersion:(no version)) (external)")
|
||||
android.AssertStringListDoesNotContain(t, "do not track if not available for platform",
|
||||
flatlist, "mylib:(minSdkVersion:29)")
|
||||
android.AssertStringListContains(t, "track platform-available lib",
|
||||
flatlist, "yourlib(minSdkVersion:29)")
|
||||
}
|
||||
|
||||
func TestTrackAllowedDeps_SkipWithoutAllowedDepsTxt(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
updatable: true,
|
||||
min_sdk_version: "29",
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
`)
|
||||
depsinfo := ctx.SingletonForTests("apex_depsinfo_singleton")
|
||||
if nil != depsinfo.MaybeRule("generateApexDepsInfoFilesRule").Output {
|
||||
t.Error("apex_depsinfo_singleton shouldn't run when allowed_deps.txt doesn't exist")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlatformUsesLatestStubsFromApexes(t *testing.T) {
|
||||
ctx := testApex(t, `
|
||||
apex {
|
||||
|
Reference in New Issue
Block a user