Revert^2 "bp2build converter for android_test_helper_app."
2395286cda2e6e9c17661de69d5397bd6cf754db
Change-Id: I698c1e62b87f3d8338d8d207d06f62ec680d71c9
diff --git a/android/allowlists/allowlists.go b/android/allowlists/allowlists.go
index bcb580a..b7d80b9 100644
--- a/android/allowlists/allowlists.go
+++ b/android/allowlists/allowlists.go
@@ -1688,6 +1688,9 @@
"MtsTimeZoneDataTestCases",
"NanoAndroidTest",
"MtsLibnativehelperTestCases",
+
+ // android_test_helper_app from allowlisted packages, but with unconverted deps
+ "SharedLibraryInfoTestApp",
}
// Bazel prod-mode allowlist. Modules in this list are built by Bazel
diff --git a/bp2build/Android.bp b/bp2build/Android.bp
index 755b7a3..e30e53d 100644
--- a/bp2build/Android.bp
+++ b/bp2build/Android.bp
@@ -44,6 +44,7 @@
"aidl_library_conversion_test.go",
"android_app_certificate_conversion_test.go",
"android_app_conversion_test.go",
+ "android_test_conversion_test.go",
"apex_conversion_test.go",
"apex_key_conversion_test.go",
"build_conversion_test.go",
diff --git a/bp2build/android_test_conversion_test.go b/bp2build/android_test_conversion_test.go
new file mode 100644
index 0000000..52413fa
--- /dev/null
+++ b/bp2build/android_test_conversion_test.go
@@ -0,0 +1,103 @@
+// Copyright 2023 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package bp2build
+
+import (
+ "android/soong/android"
+ "android/soong/java"
+
+ "testing"
+)
+
+func runAndroidTestTestCase(t *testing.T, tc Bp2buildTestCase) {
+ t.Helper()
+ RunBp2BuildTestCase(t, registerAndroidTestModuleTypes, tc)
+}
+
+func registerAndroidTestModuleTypes(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ ctx.RegisterModuleType("java_library", java.LibraryFactory)
+}
+
+func TestMinimalAndroidTest(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: {
+ shrink: true,
+ optimize: true,
+ obfuscate: true,
+ },
+}
+`,
+ 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"`,
+ }),
+ }})
+}
+
+func TestMinimalAndroidTestHelperApp(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: {
+ shrink: true,
+ optimize: true,
+ obfuscate: true,
+ },
+}
+`,
+ 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`,
+ }),
+ }})
+}
diff --git a/java/app.go b/java/app.go
index e552950..3ab814a 100755
--- a/java/app.go
+++ b/java/app.go
@@ -1258,6 +1258,8 @@
AndroidApp
appTestHelperAppProperties appTestHelperAppProperties
+
+ android.BazelModuleBase
}
func (a *AndroidTestHelperApp) InstallInTestcases() bool {
@@ -1289,6 +1291,7 @@
android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon)
android.InitDefaultableModule(module)
android.InitApexModule(module)
+ android.InitBazelModule(module)
return module
}
@@ -1799,3 +1802,27 @@
}
}
+
+func (atha *AndroidTestHelperApp) ConvertWithBp2build(ctx android.Bp2buildMutatorContext) {
+ if ok, commonAttrs, appAttrs := convertWithBp2build(ctx, &atha.AndroidApp); ok {
+ // 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,
+ // 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)
+
+ props := bazel.BazelTargetModuleProperties{
+ Rule_class: "android_binary",
+ Bzl_load_location: "//build/bazel/rules/android:android_binary.bzl",
+ }
+
+ ctx.CreateBazelTargetModule(props, commonAttrs, appAttrs)
+ }
+}