blob: 5661620e26c16ed3d77a4acebe9ecf49687c880f [file] [log] [blame]
Romain Jobredeaux428a3662022-01-28 11:12:52 -05001// 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
Sam Delmerico3177a6e2022-06-21 19:28:33 +000024func runJavaImportTestCase(t *testing.T, tc Bp2buildTestCase) {
Romain Jobredeaux428a3662022-01-28 11:12:52 -050025 t.Helper()
Sam Delmerico3177a6e2022-06-21 19:28:33 +000026 RunBp2BuildTestCase(t, registerJavaImportModuleTypes, tc)
Romain Jobredeaux428a3662022-01-28 11:12:52 -050027}
28
29func registerJavaImportModuleTypes(ctx android.RegistrationContext) {
30}
31
Sam Delmerico48983162022-02-22 21:41:33 +000032func TestJavaImportMinimal(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000033 runJavaImportTestCase(t, Bp2buildTestCase{
34 Description: "Java import - simple example",
35 ModuleTypeUnderTest: "java_import",
36 ModuleTypeUnderTestFactory: java.ImportFactory,
37 Filesystem: map[string]string{
Romain Jobredeaux428a3662022-01-28 11:12:52 -050038 "import.jar": "",
39 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +000040 Blueprint: `
Romain Jobredeaux428a3662022-01-28 11:12:52 -050041java_import {
42 name: "example_import",
43 jars: ["import.jar"],
44 bazel_module: { bp2build_available: true },
45}
46`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000047 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +000048 MakeBazelTarget("java_import", "example_import", AttrNameToString{
Romain Jobredeaux428a3662022-01-28 11:12:52 -050049 "jars": `["import.jar"]`,
50 }),
Alixb4e09a02022-09-27 15:36:01 +000051 MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -050052 "exports": `[":example_import"]`,
53 "neverlink": `True`,
54 "sdk_version": `"none"`,
Alixb4e09a02022-09-27 15:36:01 +000055 }),
Romain Jobredeaux428a3662022-01-28 11:12:52 -050056 }})
57}
Sam Delmerico48983162022-02-22 21:41:33 +000058
59func TestJavaImportArchVariant(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +000060 runJavaImportTestCase(t, Bp2buildTestCase{
61 Description: "Java import - simple example",
62 ModuleTypeUnderTest: "java_import",
63 ModuleTypeUnderTestFactory: java.ImportFactory,
64 Filesystem: map[string]string{
Sam Delmerico48983162022-02-22 21:41:33 +000065 "import.jar": "",
66 },
Sam Delmerico3177a6e2022-06-21 19:28:33 +000067 Blueprint: `
Sam Delmerico48983162022-02-22 21:41:33 +000068java_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`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000081 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +000082 MakeBazelTarget("java_import", "example_import", AttrNameToString{
Sam Delmerico48983162022-02-22 21:41:33 +000083 "jars": `select({
84 "//build/bazel/platforms/os:android": ["android.jar"],
Colin Cross133782e2022-12-20 15:29:31 -080085 "//build/bazel/platforms/os:linux_glibc": ["linux.jar"],
Sam Delmerico48983162022-02-22 21:41:33 +000086 "//conditions:default": [],
87 })`,
88 }),
Alixb4e09a02022-09-27 15:36:01 +000089 MakeBazelTarget("java_library", "example_import-neverlink", AttrNameToString{
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -050090 "exports": `[":example_import"]`,
91 "neverlink": `True`,
92 "sdk_version": `"none"`,
Alixb4e09a02022-09-27 15:36:01 +000093 }),
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{
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500117 "exports": `[":example_import"]`,
118 "neverlink": `True`,
119 "sdk_version": `"none"`,
Alixb4e09a02022-09-27 15:36:01 +0000120 }),
Sam Delmerico48983162022-02-22 21:41:33 +0000121 }})
122}