Make sure that classpath fragment contents appear in make vars.
The source of truth for what jars are in BOOTCLASSPATH and SYSTEMSERVERCLASSPATH is make; adding a classpath fragment in soong with a new jar in the contents without having it declared in make is wrong (excluding test apexes). Bug: 191369843 Test: m nothing Change-Id: Ifd313776ee7ad206031244534ed3870126e4f835
This commit is contained in:
@@ -159,11 +159,6 @@ func TestCreateClasspathElements(t *testing.T) {
|
||||
],
|
||||
}
|
||||
|
||||
bootclasspath_fragment {
|
||||
name: "non-apex-fragment",
|
||||
contents: ["othersdklibrary"],
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "otherapex",
|
||||
key: "otherapex.key",
|
||||
@@ -213,7 +208,6 @@ func TestCreateClasspathElements(t *testing.T) {
|
||||
myFragment := result.Module("mybootclasspath-fragment", "android_common_apex10000")
|
||||
myBar := result.Module("bar", "android_common_apex10000")
|
||||
|
||||
nonApexFragment := result.Module("non-apex-fragment", "android_common")
|
||||
other := result.Module("othersdklibrary", "android_common_apex10000")
|
||||
|
||||
otherApexLibrary := result.Module("otherapexlibrary", "android_common_apex10000")
|
||||
@@ -253,15 +247,6 @@ func TestCreateClasspathElements(t *testing.T) {
|
||||
assertElementsEquals(t, "elements", expectedElements, elements)
|
||||
})
|
||||
|
||||
// Verify that CreateClasspathElements detects when a fragment does not have an associated apex.
|
||||
t.Run("non apex fragment", func(t *testing.T) {
|
||||
ctx := newCtx()
|
||||
elements := java.CreateClasspathElements(ctx, []android.Module{}, []android.Module{nonApexFragment})
|
||||
android.FailIfNoMatchingErrors(t, "fragment non-apex-fragment{.*} is not part of an apex", ctx.errs)
|
||||
expectedElements := java.ClasspathElements{}
|
||||
assertElementsEquals(t, "elements", expectedElements, elements)
|
||||
})
|
||||
|
||||
// Verify that CreateClasspathElements detects when an apex has multiple fragments.
|
||||
t.Run("multiple fragments for same apex", func(t *testing.T) {
|
||||
ctx := newCtx()
|
||||
|
@@ -543,3 +543,140 @@ func TestPlatformBootclasspath_IncludesRemainingApexJars(t *testing.T) {
|
||||
"out/soong/target/product/test_device/system/etc/classpaths",
|
||||
)
|
||||
}
|
||||
|
||||
func TestBootJarNotInApex(t *testing.T) {
|
||||
android.GroupFixturePreparers(
|
||||
prepareForTestWithPlatformBootclasspath,
|
||||
PrepareForTestWithApexBuildComponents,
|
||||
prepareForTestWithMyapex,
|
||||
java.FixtureConfigureApexBootJars("myapex:foo"),
|
||||
).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`dependency "foo" of "myplatform-bootclasspath" missing variant`)).
|
||||
RunTestWithBp(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "foo",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
apex_available: [
|
||||
"myapex",
|
||||
],
|
||||
}
|
||||
|
||||
bootclasspath_fragment {
|
||||
name: "not-in-apex-fragment",
|
||||
contents: [
|
||||
"foo",
|
||||
],
|
||||
}
|
||||
|
||||
platform_bootclasspath {
|
||||
name: "myplatform-bootclasspath",
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
||||
func TestBootFragmentNotInApex(t *testing.T) {
|
||||
android.GroupFixturePreparers(
|
||||
prepareForTestWithPlatformBootclasspath,
|
||||
PrepareForTestWithApexBuildComponents,
|
||||
prepareForTestWithMyapex,
|
||||
java.FixtureConfigureApexBootJars("myapex:foo"),
|
||||
).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`library foo.*have no corresponding fragment.*`)).RunTestWithBp(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
java_libs: ["foo"],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "foo",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
apex_available: ["myapex"],
|
||||
permitted_packages: ["foo"],
|
||||
}
|
||||
|
||||
bootclasspath_fragment {
|
||||
name: "not-in-apex-fragment",
|
||||
contents: ["foo"],
|
||||
}
|
||||
|
||||
platform_bootclasspath {
|
||||
name: "myplatform-bootclasspath",
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
||||
func TestNonBootJarInFragment(t *testing.T) {
|
||||
android.GroupFixturePreparers(
|
||||
prepareForTestWithPlatformBootclasspath,
|
||||
PrepareForTestWithApexBuildComponents,
|
||||
prepareForTestWithMyapex,
|
||||
java.FixtureConfigureApexBootJars("myapex:foo"),
|
||||
).ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`in contents must also be declared in PRODUCT_APEX_BOOT_JARS`)).
|
||||
RunTestWithBp(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
bootclasspath_fragments: ["apex-fragment"],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "foo",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
apex_available: ["myapex"],
|
||||
permitted_packages: ["foo"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "bar",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
apex_available: ["myapex"],
|
||||
permitted_packages: ["bar"],
|
||||
}
|
||||
|
||||
bootclasspath_fragment {
|
||||
name: "apex-fragment",
|
||||
contents: ["foo", "bar"],
|
||||
apex_available:[ "myapex" ],
|
||||
}
|
||||
|
||||
platform_bootclasspath {
|
||||
name: "myplatform-bootclasspath",
|
||||
fragments: [{
|
||||
apex: "myapex",
|
||||
module:"apex-fragment",
|
||||
}],
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
@@ -130,3 +130,54 @@ func TestSystemserverclasspathFragmentNoGeneratedProto(t *testing.T) {
|
||||
`mysystemserverclasspathfragment`,
|
||||
})
|
||||
}
|
||||
|
||||
func TestSystemServerClasspathFragmentWithContentNotInMake(t *testing.T) {
|
||||
android.GroupFixturePreparers(
|
||||
prepareForTestWithSystemserverclasspathFragment,
|
||||
prepareForTestWithMyapex,
|
||||
dexpreopt.FixtureSetApexSystemServerJars("myapex:foo"),
|
||||
).
|
||||
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`in contents must also be declared in PRODUCT_UPDATABLE_SYSTEM_SERVER_JARS`)).
|
||||
RunTestWithBp(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
systemserverclasspath_fragments: [
|
||||
"mysystemserverclasspathfragment",
|
||||
],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "foo",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "bar",
|
||||
srcs: ["b.java"],
|
||||
installable: true,
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
systemserverclasspath_fragment {
|
||||
name: "mysystemserverclasspathfragment",
|
||||
contents: [
|
||||
"foo",
|
||||
"bar",
|
||||
],
|
||||
apex_available: [
|
||||
"myapex",
|
||||
],
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
Reference in New Issue
Block a user