Loading java/bootclasspath_fragment.go +56 −47 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -223,7 +233,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 // module (if any) matches the contents. Loading java/bootclasspath_fragment_test.go +8 −27 Original line number Diff line number Diff line Loading @@ -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"], } `) } Loading @@ -76,6 +66,7 @@ func TestBootclasspathFragmentInconsistentArtConfiguration_Platform(t *testing.T bootclasspath_fragment { name: "bootclasspath-fragment", image_name: "art", contents: ["foo", "bar"], apex_available: [ "apex", ], Loading @@ -94,6 +85,7 @@ func TestBootclasspathFragmentInconsistentArtConfiguration_ApexMixture(t *testin bootclasspath_fragment { name: "bootclasspath-fragment", image_name: "art", contents: ["foo", "bar"], apex_available: [ "apex1", "apex2", Loading @@ -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", Loading sdk/bootclasspath_fragment_sdk_test.go +23 −2 Original line number Diff line number Diff line Loading @@ -424,6 +424,7 @@ func TestBasicSdkWithBootclasspathFragment(t *testing.T) { android.GroupFixturePreparers( prepareForSdkTestWithApex, prepareForSdkTestWithJava, android.FixtureAddFile("java/mybootlib.jar", nil), android.FixtureWithRootAndroidBp(` sdk { name: "mysdk", Loading @@ -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"], Loading @@ -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 Loading
java/bootclasspath_fragment.go +56 −47 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -223,7 +233,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 // module (if any) matches the contents. Loading
java/bootclasspath_fragment_test.go +8 −27 Original line number Diff line number Diff line Loading @@ -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"], } `) } Loading @@ -76,6 +66,7 @@ func TestBootclasspathFragmentInconsistentArtConfiguration_Platform(t *testing.T bootclasspath_fragment { name: "bootclasspath-fragment", image_name: "art", contents: ["foo", "bar"], apex_available: [ "apex", ], Loading @@ -94,6 +85,7 @@ func TestBootclasspathFragmentInconsistentArtConfiguration_ApexMixture(t *testin bootclasspath_fragment { name: "bootclasspath-fragment", image_name: "art", contents: ["foo", "bar"], apex_available: [ "apex1", "apex2", Loading @@ -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", Loading
sdk/bootclasspath_fragment_sdk_test.go +23 −2 Original line number Diff line number Diff line Loading @@ -424,6 +424,7 @@ func TestBasicSdkWithBootclasspathFragment(t *testing.T) { android.GroupFixturePreparers( prepareForSdkTestWithApex, prepareForSdkTestWithJava, android.FixtureAddFile("java/mybootlib.jar", nil), android.FixtureWithRootAndroidBp(` sdk { name: "mysdk", Loading @@ -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"], Loading @@ -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