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:
@@ -23,7 +23,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
android.RegisterSingletonType("apex_depsinfo_singleton", apexDepsInfoSingletonFactory)
|
registerApexDepsInfoComponents(android.InitRegistrationContext)
|
||||||
|
}
|
||||||
|
|
||||||
|
func registerApexDepsInfoComponents(ctx android.RegistrationContext) {
|
||||||
|
ctx.RegisterSingletonType("apex_depsinfo_singleton", apexDepsInfoSingletonFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
type apexDepsInfoSingleton struct {
|
type apexDepsInfoSingleton struct {
|
||||||
|
@@ -1980,6 +1980,93 @@ func TestApexMinSdkVersion_InVendorApex(t *testing.T) {
|
|||||||
android.AssertStringDoesContain(t, "cflags", cflags, "-target aarch64-linux-android29")
|
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) {
|
func TestPlatformUsesLatestStubsFromApexes(t *testing.T) {
|
||||||
ctx := testApex(t, `
|
ctx := testApex(t, `
|
||||||
apex {
|
apex {
|
||||||
|
@@ -19,6 +19,7 @@ import "android/soong/android"
|
|||||||
var PrepareForTestWithApexBuildComponents = android.GroupFixturePreparers(
|
var PrepareForTestWithApexBuildComponents = android.GroupFixturePreparers(
|
||||||
android.FixtureRegisterWithContext(registerApexBuildComponents),
|
android.FixtureRegisterWithContext(registerApexBuildComponents),
|
||||||
android.FixtureRegisterWithContext(registerApexKeyBuildComponents),
|
android.FixtureRegisterWithContext(registerApexKeyBuildComponents),
|
||||||
|
android.FixtureRegisterWithContext(registerApexDepsInfoComponents),
|
||||||
// Additional files needed in tests that disallow non-existent source files.
|
// Additional files needed in tests that disallow non-existent source files.
|
||||||
// This includes files that are needed by all, or at least most, instances of an apex module type.
|
// This includes files that are needed by all, or at least most, instances of an apex module type.
|
||||||
android.MockFS{
|
android.MockFS{
|
||||||
|
Reference in New Issue
Block a user