Loading bp2build/android_test_conversion_test.go +75 −0 Original line number Diff line number Diff line Loading @@ -43,11 +43,44 @@ func TestMinimalAndroidTest(t *testing.T) { "assets/asset.png": "", }, Blueprint: ` android_test { name: "TestApp", srcs: ["app.java"], sdk_version: "current", } `, ExpectedBazelTargets: []string{ MakeBazelTarget("android_test", "TestApp", AttrNameToString{ "srcs": `["app.java"]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `["res/res.png"]`, "sdk_version": `"current"`, "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, // no need for optimize = False because it's false for // android_test by default }), }}) } func TestAndroidTest_OptimizationEnabled(t *testing.T) { runAndroidAppTestCase(t, Bp2buildTestCase{ Description: "Android test - simple example", ModuleTypeUnderTest: "android_test", ModuleTypeUnderTestFactory: java.AndroidTestFactory, Filesystem: map[string]string{ "app.java": "", "res/res.png": "", "AndroidManifest.xml": "", "assets/asset.png": "", }, Blueprint: ` android_test { name: "TestApp", srcs: ["app.java"], sdk_version: "current", optimize: { enabled: true, shrink: true, optimize: true, obfuscate: true, Loading @@ -62,6 +95,9 @@ android_test { "sdk_version": `"current"`, "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, // optimize = True because it's false for android_test by // default "optimize": `True`, }), }}) } Loading Loading @@ -98,6 +134,45 @@ android_test_helper_app { "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, "testonly": `True`, // no need for optimize = True because it's true for // android_test_helper_app by default }), }}) } func TestAndroidTestHelperApp_OptimizationDisabled(t *testing.T) { runAndroidAppTestCase(t, Bp2buildTestCase{ Description: "Android test helper app - simple example", ModuleTypeUnderTest: "android_test_helper_app", ModuleTypeUnderTestFactory: java.AndroidTestHelperAppFactory, Filesystem: map[string]string{ "app.java": "", "res/res.png": "", "AndroidManifest.xml": "", "assets/asset.png": "", }, Blueprint: ` android_test_helper_app { name: "TestApp", srcs: ["app.java"], sdk_version: "current", optimize: { enabled: false, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("android_binary", "TestApp", AttrNameToString{ "srcs": `["app.java"]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `["res/res.png"]`, "sdk_version": `"current"`, "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, "testonly": `True`, // optimize = False because it's true for // android_test_helper_app by default "optimize": `False`, }), }}) } java/app.go +20 −5 Original line number Diff line number Diff line Loading @@ -1683,9 +1683,22 @@ func convertWithBp2build(ctx android.Bp2buildMutatorContext, a *AndroidApp) (boo Updatable: a.appProperties.Updatable, } if !BoolDefault(a.dexProperties.Optimize.Enabled, true) { appAttrs.Optimize = proptools.BoolPtr(false) } else { // Optimization is.. // - enabled by default for android_app, android_test_helper_app // - disabled by default for android_test // // TODO(b/192032291): Disable android_test_helper_app optimization by // default after auditing downstream usage. if a.dexProperties.Optimize.Enabled == nil { // Property was not explicitly defined. a.dexProperties.Optimize.Enabled = &a.dexProperties.Optimize.EnabledByDefault } if Bool(a.dexProperties.Optimize.Enabled) { if !a.dexProperties.Optimize.EnabledByDefault { // explicitly enable optimize for module types that disable it by default appAttrs.Optimize = proptools.BoolPtr(true) } handCraftedFlags := "" if Bool(a.dexProperties.Optimize.Ignore_warnings) { handCraftedFlags += "-ignorewarning " Loading Loading @@ -1715,6 +1728,9 @@ func convertWithBp2build(ctx android.Bp2buildMutatorContext, a *AndroidApp) (boo }) appAttrs.Proguard_specs.Add(bazel.MakeLabelAttribute(":" + generatedFlagFileRuleName)) } } else if a.dexProperties.Optimize.EnabledByDefault { // explicitly disable optimize for module types that enable it by default appAttrs.Optimize = proptools.BoolPtr(false) } commonAttrs, bp2BuildInfo, supported := a.convertLibraryAttrsBp2Build(ctx) Loading Loading @@ -1803,13 +1819,12 @@ func (atha *AndroidTestHelperApp) ConvertWithBp2build(ctx android.Bp2buildMutato // an android_test_helper_app is an android_binary with testonly = True commonAttrs.Testonly = proptools.BoolPtr(true) // additionally, it sets default values differently to android_app, // android_test_helper_app sets default values differently to android_app, // https://cs.android.com/android/platform/superproject/main/+/main:build/soong/java/app.go;l=1273-1279;drc=e12c083198403ec694af6c625aed11327eb2bf7f // // installable: true (settable prop) // use_embedded_native_libs: true (settable prop) // lint.test: true (settable prop) // optimize EnabledByDefault: true (blueprint mutated prop) // AlwaysPackageNativeLibs: true (blueprint mutated prop) // dexpreopt isTest: true (not prop) Loading Loading
bp2build/android_test_conversion_test.go +75 −0 Original line number Diff line number Diff line Loading @@ -43,11 +43,44 @@ func TestMinimalAndroidTest(t *testing.T) { "assets/asset.png": "", }, Blueprint: ` android_test { name: "TestApp", srcs: ["app.java"], sdk_version: "current", } `, ExpectedBazelTargets: []string{ MakeBazelTarget("android_test", "TestApp", AttrNameToString{ "srcs": `["app.java"]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `["res/res.png"]`, "sdk_version": `"current"`, "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, // no need for optimize = False because it's false for // android_test by default }), }}) } func TestAndroidTest_OptimizationEnabled(t *testing.T) { runAndroidAppTestCase(t, Bp2buildTestCase{ Description: "Android test - simple example", ModuleTypeUnderTest: "android_test", ModuleTypeUnderTestFactory: java.AndroidTestFactory, Filesystem: map[string]string{ "app.java": "", "res/res.png": "", "AndroidManifest.xml": "", "assets/asset.png": "", }, Blueprint: ` android_test { name: "TestApp", srcs: ["app.java"], sdk_version: "current", optimize: { enabled: true, shrink: true, optimize: true, obfuscate: true, Loading @@ -62,6 +95,9 @@ android_test { "sdk_version": `"current"`, "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, // optimize = True because it's false for android_test by // default "optimize": `True`, }), }}) } Loading Loading @@ -98,6 +134,45 @@ android_test_helper_app { "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, "testonly": `True`, // no need for optimize = True because it's true for // android_test_helper_app by default }), }}) } func TestAndroidTestHelperApp_OptimizationDisabled(t *testing.T) { runAndroidAppTestCase(t, Bp2buildTestCase{ Description: "Android test helper app - simple example", ModuleTypeUnderTest: "android_test_helper_app", ModuleTypeUnderTestFactory: java.AndroidTestHelperAppFactory, Filesystem: map[string]string{ "app.java": "", "res/res.png": "", "AndroidManifest.xml": "", "assets/asset.png": "", }, Blueprint: ` android_test_helper_app { name: "TestApp", srcs: ["app.java"], sdk_version: "current", optimize: { enabled: false, }, } `, ExpectedBazelTargets: []string{ MakeBazelTarget("android_binary", "TestApp", AttrNameToString{ "srcs": `["app.java"]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `["res/res.png"]`, "sdk_version": `"current"`, "assets": `["assets/asset.png"]`, "assets_dir": `"assets"`, "testonly": `True`, // optimize = False because it's true for // android_test_helper_app by default "optimize": `False`, }), }}) }
java/app.go +20 −5 Original line number Diff line number Diff line Loading @@ -1683,9 +1683,22 @@ func convertWithBp2build(ctx android.Bp2buildMutatorContext, a *AndroidApp) (boo Updatable: a.appProperties.Updatable, } if !BoolDefault(a.dexProperties.Optimize.Enabled, true) { appAttrs.Optimize = proptools.BoolPtr(false) } else { // Optimization is.. // - enabled by default for android_app, android_test_helper_app // - disabled by default for android_test // // TODO(b/192032291): Disable android_test_helper_app optimization by // default after auditing downstream usage. if a.dexProperties.Optimize.Enabled == nil { // Property was not explicitly defined. a.dexProperties.Optimize.Enabled = &a.dexProperties.Optimize.EnabledByDefault } if Bool(a.dexProperties.Optimize.Enabled) { if !a.dexProperties.Optimize.EnabledByDefault { // explicitly enable optimize for module types that disable it by default appAttrs.Optimize = proptools.BoolPtr(true) } handCraftedFlags := "" if Bool(a.dexProperties.Optimize.Ignore_warnings) { handCraftedFlags += "-ignorewarning " Loading Loading @@ -1715,6 +1728,9 @@ func convertWithBp2build(ctx android.Bp2buildMutatorContext, a *AndroidApp) (boo }) appAttrs.Proguard_specs.Add(bazel.MakeLabelAttribute(":" + generatedFlagFileRuleName)) } } else if a.dexProperties.Optimize.EnabledByDefault { // explicitly disable optimize for module types that enable it by default appAttrs.Optimize = proptools.BoolPtr(false) } commonAttrs, bp2BuildInfo, supported := a.convertLibraryAttrsBp2Build(ctx) Loading Loading @@ -1803,13 +1819,12 @@ func (atha *AndroidTestHelperApp) ConvertWithBp2build(ctx android.Bp2buildMutato // an android_test_helper_app is an android_binary with testonly = True commonAttrs.Testonly = proptools.BoolPtr(true) // additionally, it sets default values differently to android_app, // android_test_helper_app sets default values differently to android_app, // https://cs.android.com/android/platform/superproject/main/+/main:build/soong/java/app.go;l=1273-1279;drc=e12c083198403ec694af6c625aed11327eb2bf7f // // installable: true (settable prop) // use_embedded_native_libs: true (settable prop) // lint.test: true (settable prop) // optimize EnabledByDefault: true (blueprint mutated prop) // AlwaysPackageNativeLibs: true (blueprint mutated prop) // dexpreopt isTest: true (not prop) Loading