Merge "Tighten bootclasspath_fragment property validation" into sc-dev
This commit is contained in:
commit
9dbfa1c10a
|
@ -168,12 +168,22 @@ func bootclasspathFragmentFactory() android.Module {
|
|||
// necessary.
|
||||
func bootclasspathFragmentInitContentsFromImage(ctx android.EarlyModuleContext, m *BootclasspathFragmentModule) {
|
||||
contents := m.properties.Contents
|
||||
if m.properties.Image_name == nil && len(contents) == 0 {
|
||||
ctx.ModuleErrorf(`neither of the "image_name" and "contents" properties have been supplied, please supply exactly one`)
|
||||
if len(contents) == 0 {
|
||||
ctx.PropertyErrorf("contents", "required property is missing")
|
||||
return
|
||||
}
|
||||
|
||||
if m.properties.Image_name == nil {
|
||||
// Nothing to do.
|
||||
return
|
||||
}
|
||||
|
||||
imageName := proptools.String(m.properties.Image_name)
|
||||
if imageName == "art" {
|
||||
if imageName != "art" {
|
||||
ctx.PropertyErrorf("image_name", `unknown image name %q, expected "art"`, imageName)
|
||||
return
|
||||
}
|
||||
|
||||
// TODO(b/177892522): Prebuilts (versioned or not) should not use the image_name property.
|
||||
if android.IsModuleInVersionedSdk(m) {
|
||||
// The module is a versioned prebuilt so ignore it. This is done for a couple of reasons:
|
||||
|
@ -222,7 +232,6 @@ func bootclasspathFragmentInitContentsFromImage(ctx android.EarlyModuleContext,
|
|||
|
||||
// Store the jars in the Contents property so that they can be used to add dependencies.
|
||||
m.properties.Contents = modules.CopyOfJars()
|
||||
}
|
||||
}
|
||||
|
||||
// bootclasspathImageNameContentsConsistencyCheck checks that the configuration that applies to this
|
||||
|
|
|
@ -29,38 +29,28 @@ var prepareForTestWithBootclasspathFragment = android.GroupFixturePreparers(
|
|||
dexpreopt.PrepareForTestByEnablingDexpreopt,
|
||||
)
|
||||
|
||||
func TestUnknownBootclasspathFragment(t *testing.T) {
|
||||
func TestBootclasspathFragment_UnknownImageName(t *testing.T) {
|
||||
prepareForTestWithBootclasspathFragment.
|
||||
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
|
||||
`\Qimage_name: unknown image name "unknown", expected "art"\E`)).
|
||||
RunTestWithBp(t, `
|
||||
bootclasspath_fragment {
|
||||
name: "unknown-bootclasspath-fragment",
|
||||
image_name: "unknown",
|
||||
contents: ["foo"],
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
||||
func TestUnknownBootclasspathFragmentImageName(t *testing.T) {
|
||||
func TestPrebuiltBootclasspathFragment_UnknownImageName(t *testing.T) {
|
||||
prepareForTestWithBootclasspathFragment.
|
||||
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
|
||||
RunTestWithBp(t, `
|
||||
bootclasspath_fragment {
|
||||
name: "unknown-bootclasspath-fragment",
|
||||
image_name: "unknown",
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
||||
func TestUnknownPrebuiltBootclasspathFragment(t *testing.T) {
|
||||
prepareForTestWithBootclasspathFragment.
|
||||
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`\Qimage_name: Unknown image name "unknown", expected one of art, boot\E`)).
|
||||
`\Qimage_name: unknown image name "unknown", expected "art"\E`)).
|
||||
RunTestWithBp(t, `
|
||||
prebuilt_bootclasspath_fragment {
|
||||
name: "unknown-bootclasspath-fragment",
|
||||
image_name: "unknown",
|
||||
contents: ["foo"],
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
@ -76,6 +66,7 @@ func TestBootclasspathFragmentInconsistentArtConfiguration_Platform(t *testing.T
|
|||
bootclasspath_fragment {
|
||||
name: "bootclasspath-fragment",
|
||||
image_name: "art",
|
||||
contents: ["foo", "bar"],
|
||||
apex_available: [
|
||||
"apex",
|
||||
],
|
||||
|
@ -94,6 +85,7 @@ func TestBootclasspathFragmentInconsistentArtConfiguration_ApexMixture(t *testin
|
|||
bootclasspath_fragment {
|
||||
name: "bootclasspath-fragment",
|
||||
image_name: "art",
|
||||
contents: ["foo", "bar"],
|
||||
apex_available: [
|
||||
"apex1",
|
||||
"apex2",
|
||||
|
@ -102,17 +94,6 @@ func TestBootclasspathFragmentInconsistentArtConfiguration_ApexMixture(t *testin
|
|||
`)
|
||||
}
|
||||
|
||||
func TestBootclasspathFragmentWithoutImageNameOrContents(t *testing.T) {
|
||||
prepareForTestWithBootclasspathFragment.
|
||||
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
|
||||
`\Qneither of the "image_name" and "contents" properties\E`)).
|
||||
RunTestWithBp(t, `
|
||||
bootclasspath_fragment {
|
||||
name: "bootclasspath-fragment",
|
||||
}
|
||||
`)
|
||||
}
|
||||
|
||||
func TestBootclasspathFragment_Coverage(t *testing.T) {
|
||||
prepareForTestWithFrameworkCoverage := android.FixtureMergeEnv(map[string]string{
|
||||
"EMMA_INSTRUMENT": "true",
|
||||
|
|
|
@ -424,6 +424,7 @@ func TestBasicSdkWithBootclasspathFragment(t *testing.T) {
|
|||
android.GroupFixturePreparers(
|
||||
prepareForSdkTestWithApex,
|
||||
prepareForSdkTestWithJava,
|
||||
android.FixtureAddFile("java/mybootlib.jar", nil),
|
||||
android.FixtureWithRootAndroidBp(`
|
||||
sdk {
|
||||
name: "mysdk",
|
||||
|
@ -433,16 +434,27 @@ func TestBasicSdkWithBootclasspathFragment(t *testing.T) {
|
|||
bootclasspath_fragment {
|
||||
name: "mybootclasspathfragment",
|
||||
image_name: "art",
|
||||
contents: ["mybootlib"],
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "mybootlib",
|
||||
apex_available: ["myapex"],
|
||||
srcs: ["Test.java"],
|
||||
system_modules: "none",
|
||||
sdk_version: "none",
|
||||
min_sdk_version: "1",
|
||||
compile_dex: true,
|
||||
}
|
||||
|
||||
sdk_snapshot {
|
||||
name: "mysdk@1",
|
||||
bootclasspath_fragments: ["mybootclasspathfragment_mysdk_1"],
|
||||
bootclasspath_fragments: ["mysdk_mybootclasspathfragment@1"],
|
||||
}
|
||||
|
||||
prebuilt_bootclasspath_fragment {
|
||||
name: "mybootclasspathfragment_mysdk_1",
|
||||
name: "mysdk_mybootclasspathfragment@1",
|
||||
sdk_member_name: "mybootclasspathfragment",
|
||||
prefer: false,
|
||||
visibility: ["//visibility:public"],
|
||||
|
@ -450,6 +462,15 @@ func TestBasicSdkWithBootclasspathFragment(t *testing.T) {
|
|||
"myapex",
|
||||
],
|
||||
image_name: "art",
|
||||
contents: ["mysdk_mybootlib@1"],
|
||||
}
|
||||
|
||||
java_import {
|
||||
name: "mysdk_mybootlib@1",
|
||||
sdk_member_name: "mybootlib",
|
||||
visibility: ["//visibility:public"],
|
||||
apex_available: ["com.android.art"],
|
||||
jars: ["java/mybootlib.jar"],
|
||||
}
|
||||
`),
|
||||
).RunTest(t)
|
||||
|
|
Loading…
Reference in New Issue