diff options
Diffstat (limited to 'java/app_test.go')
-rw-r--r-- | java/app_test.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/java/app_test.go b/java/app_test.go index 3d83ea1dc..61b718d00 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -4727,3 +4727,74 @@ func TestResourcesWithFlagDirectories(t *testing.T) { "out/soong/.intermediates/foo/android_common/aapt2/res/values_strings.(test.package.flag1).arsc.flat", ) } + +func TestAutogeneratedStaticRro(t *testing.T) { + t.Parallel() + bp := ` +android_app { + name: "foo", + srcs: ["foo.java"], + platform_apis: true, +} +override_android_app { + name: "override_foo", + base: "foo", +} +` + testCases := []struct { + desc string + preparer android.FixturePreparer + overlayApkExpected bool + }{ + { + desc: "No DEVICE_PACKAGE_OVERLAYS, no overlay .apk file", + overlayApkExpected: false, + }, + { + desc: "DEVICE_PACKAGE_OVERLAYS exists, but the directory is empty", + overlayApkExpected: false, + preparer: android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.DeviceResourceOverlays = []string{"device/company/test_product"} + }), + }, + { + desc: "DEVICE_PACKAGE_OVERLAYS exists, directory is non-empty, but does not contain a matching resource dir", + overlayApkExpected: false, + preparer: android.GroupFixturePreparers( + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.DeviceResourceOverlays = []string{"device/company/test_product"} + }), + android.MockFS{ + "res/foo.xml": nil, + "device/company/test_product/different_res/foo.xml": nil, // different dir + }.AddToFixture(), + ), + }, + { + desc: "DEVICE_PACKAGE_OVERLAYS and the directory contain a matching resource dir", + overlayApkExpected: true, + preparer: android.GroupFixturePreparers( + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.DeviceResourceOverlays = []string{"device/company/test_product"} + }), + android.MockFS{ + "res/foo.xml": nil, + "device/company/test_product/res/foo.xml": nil, + }.AddToFixture(), + ), + }, + } + for _, tc := range testCases { + result := android.GroupFixturePreparers( + PrepareForTestWithJavaDefaultModules, + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.EnforceRROTargets = []string{"*"} + }), + android.OptionalFixturePreparer(tc.preparer), + ).RunTestWithBp(t, bp) + vendorOverlayApk := result.ModuleForTests("foo__test_product__auto_generated_rro_vendor", "android_arm64_armv8-a").MaybeOutput("foo__test_product__auto_generated_rro_vendor.apk") + android.AssertBoolEquals(t, tc.desc, tc.overlayApkExpected, vendorOverlayApk.Rule != nil) + overrideVendorOverlayApk := result.ModuleForTests("override_foo__test_product__auto_generated_rro_vendor", "android_arm64_armv8-a").MaybeOutput("override_foo__test_product__auto_generated_rro_vendor.apk") + android.AssertBoolEquals(t, tc.desc, tc.overlayApkExpected, overrideVendorOverlayApk.Rule != nil) + } +} |