• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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