1// Copyright 2022 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 runJavaImportTestCase(t *testing.T, tc Bp2buildTestCase) { 25 t.Helper() 26 RunBp2BuildTestCase(t, registerJavaImportModuleTypes, tc) 27} 28 29func registerJavaImportModuleTypes(ctx android.RegistrationContext) { 30} 31 32func TestJavaImportMinimal(t *testing.T) { 33 runJavaImportTestCase(t, Bp2buildTestCase{ 34 Description: "Java import - simple example", 35 ModuleTypeUnderTest: "java_import", 36 ModuleTypeUnderTestFactory: java.ImportFactory, 37 Filesystem: map[string]string{ 38 "import.jar": "", 39 }, 40 Blueprint: ` 41java_import { 42 name: "example_import", 43 jars: ["import.jar"], 44 bazel_module: { bp2build_available: true }, 45} 46`, 47 ExpectedBazelTargets: []string{ 48 MakeBazelTarget("java_import", "example_import", AttrNameToString{ 49 "jars": `["import.jar"]`, 50 }), 51 MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{ 52 "exports": `[":example_import"]`, 53 "neverlink": `True`, 54 "sdk_version": `"none"`, 55 }), 56 }}) 57} 58 59func TestJavaImportArchVariant(t *testing.T) { 60 runJavaImportTestCase(t, Bp2buildTestCase{ 61 Description: "Java import - simple example", 62 ModuleTypeUnderTest: "java_import", 63 ModuleTypeUnderTestFactory: java.ImportFactory, 64 Filesystem: map[string]string{ 65 "import.jar": "", 66 }, 67 Blueprint: ` 68java_import { 69 name: "example_import", 70 target: { 71 android: { 72 jars: ["android.jar"], 73 }, 74 linux_glibc: { 75 jars: ["linux.jar"], 76 }, 77 }, 78 bazel_module: { bp2build_available: true }, 79} 80`, 81 ExpectedBazelTargets: []string{ 82 MakeBazelTarget("java_import", "example_import", AttrNameToString{ 83 "jars": `select({ 84 "//build/bazel/platforms/os:android": ["android.jar"], 85 "//build/bazel/platforms/os:linux_glibc": ["linux.jar"], 86 "//conditions:default": [], 87 })`, 88 }), 89 MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{ 90 "exports": `[":example_import"]`, 91 "neverlink": `True`, 92 "sdk_version": `"none"`, 93 }), 94 }}) 95} 96 97func TestJavaImportHost(t *testing.T) { 98 runJavaImportTestCase(t, Bp2buildTestCase{ 99 Description: "Java import host- simple example", 100 ModuleTypeUnderTest: "java_import_host", 101 ModuleTypeUnderTestFactory: java.ImportFactory, 102 Filesystem: map[string]string{ 103 "import.jar": "", 104 }, 105 Blueprint: ` 106java_import_host { 107 name: "example_import", 108 jars: ["import.jar"], 109 bazel_module: { bp2build_available: true }, 110} 111`, 112 ExpectedBazelTargets: []string{ 113 MakeBazelTarget("java_import", "example_import", AttrNameToString{ 114 "jars": `["import.jar"]`, 115 }), 116 MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{ 117 "exports": `[":example_import"]`, 118 "neverlink": `True`, 119 "sdk_version": `"none"`, 120 }), 121 }}) 122} 123