1// Copyright 2021 Google Inc. All rights reserved. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package bp2build 16 17import ( 18 "android/soong/android" 19 "android/soong/java" 20 21 "testing" 22) 23 24func runAndroidAppTestCase(t *testing.T, tc bp2buildTestCase) { 25 t.Helper() 26 runBp2BuildTestCase(t, registerAndroidAppModuleTypes, tc) 27} 28 29func registerAndroidAppModuleTypes(ctx android.RegistrationContext) { 30} 31 32func TestMinimalAndroidApp(t *testing.T) { 33 runAndroidAppTestCase(t, bp2buildTestCase{ 34 description: "Android app - simple example", 35 moduleTypeUnderTest: "android_app", 36 moduleTypeUnderTestFactory: java.AndroidAppFactory, 37 filesystem: map[string]string{ 38 "app.java": "", 39 "res/res.png": "", 40 "AndroidManifest.xml": "", 41 }, 42 blueprint: ` 43android_app { 44 name: "TestApp", 45 srcs: ["app.java"], 46 sdk_version: "current", 47} 48`, 49 expectedBazelTargets: []string{ 50 makeBazelTarget("android_binary", "TestApp", attrNameToString{ 51 "srcs": `["app.java"]`, 52 "manifest": `"AndroidManifest.xml"`, 53 "resource_files": `["res/res.png"]`, 54 }), 55 }}) 56} 57 58func TestAndroidAppAllSupportedFields(t *testing.T) { 59 runAndroidAppTestCase(t, bp2buildTestCase{ 60 description: "Android app - all supported fields", 61 moduleTypeUnderTest: "android_app", 62 moduleTypeUnderTestFactory: java.AndroidAppFactory, 63 filesystem: map[string]string{ 64 "app.java": "", 65 "resa/res.png": "", 66 "resb/res.png": "", 67 "manifest/AndroidManifest.xml": "", 68 }, 69 blueprint: simpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + ` 70android_app { 71 name: "TestApp", 72 srcs: ["app.java"], 73 sdk_version: "current", 74 package_name: "com.google", 75 resource_dirs: ["resa", "resb"], 76 manifest: "manifest/AndroidManifest.xml", 77 static_libs: ["static_lib_dep"] 78} 79`, 80 expectedBazelTargets: []string{ 81 makeBazelTarget("android_binary", "TestApp", attrNameToString{ 82 "srcs": `["app.java"]`, 83 "manifest": `"manifest/AndroidManifest.xml"`, 84 "resource_files": `[ 85 "resa/res.png", 86 "resb/res.png", 87 ]`, 88 "custom_package": `"com.google"`, 89 "deps": `[":static_lib_dep"]`, 90 }), 91 }}) 92} 93 94func TestAndroidAppArchVariantSrcs(t *testing.T) { 95 runAndroidAppTestCase(t, bp2buildTestCase{ 96 description: "Android app - arch variant srcs", 97 moduleTypeUnderTest: "android_app", 98 moduleTypeUnderTestFactory: java.AndroidAppFactory, 99 filesystem: map[string]string{ 100 "arm.java": "", 101 "x86.java": "", 102 "res/res.png": "", 103 "AndroidManifest.xml": "", 104 }, 105 blueprint: ` 106android_app { 107 name: "TestApp", 108 sdk_version: "current", 109 arch: { 110 arm: { 111 srcs: ["arm.java"], 112 }, 113 x86: { 114 srcs: ["x86.java"], 115 } 116 } 117} 118`, 119 expectedBazelTargets: []string{ 120 makeBazelTarget("android_binary", "TestApp", attrNameToString{ 121 "srcs": `select({ 122 "//build/bazel/platforms/arch:arm": ["arm.java"], 123 "//build/bazel/platforms/arch:x86": ["x86.java"], 124 "//conditions:default": [], 125 })`, 126 "manifest": `"AndroidManifest.xml"`, 127 "resource_files": `["res/res.png"]`, 128 }), 129 }}) 130} 131