blob: f546cf45dbd3b532050d02b2896caa950f7d9ccc [file] [log] [blame]
Sam Delmericoc7681022022-02-04 21:01:20 +00001// 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 "fmt"
19 "testing"
20
21 "android/soong/android"
22 "android/soong/java"
23)
24
Sam Delmerico3177a6e2022-06-21 19:28:33 +000025func runJavaProtoTestCase(t *testing.T, tc Bp2buildTestCase) {
Sam Delmericoc7681022022-02-04 21:01:20 +000026 t.Helper()
Sam Delmerico3177a6e2022-06-21 19:28:33 +000027 (&tc).ModuleTypeUnderTest = "java_library_static"
28 (&tc).ModuleTypeUnderTestFactory = java.LibraryFactory
29 RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) {}, tc)
Sam Delmericoc7681022022-02-04 21:01:20 +000030}
31
32func TestJavaProto(t *testing.T) {
33 testCases := []struct {
34 protoType string
35 javaLibraryType string
36 javaLibraryNameExtension string
37 }{
38 {
39 protoType: "nano",
40 javaLibraryType: "java_nano_proto_library",
41 javaLibraryNameExtension: "java_proto_nano",
42 },
43 {
44 protoType: "micro",
45 javaLibraryType: "java_micro_proto_library",
46 javaLibraryNameExtension: "java_proto_micro",
47 },
48 {
49 protoType: "lite",
50 javaLibraryType: "java_lite_proto_library",
51 javaLibraryNameExtension: "java_proto_lite",
52 },
53 {
54 protoType: "stream",
55 javaLibraryType: "java_stream_proto_library",
56 javaLibraryNameExtension: "java_proto_stream",
57 },
58 {
59 protoType: "full",
60 javaLibraryType: "java_proto_library",
61 javaLibraryNameExtension: "java_proto",
62 },
63 }
64
65 bp := `java_library_static {
66 name: "java-protos",
67 proto: {
68 type: "%s",
69 },
70 srcs: ["a.proto"],
71}`
72
Alixe06d75b2022-08-31 18:28:19 +000073 protoLibrary := MakeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{
Sam Delmerico7a629092022-03-07 16:20:54 +000074 "srcs": `["a.proto"]`,
Sam Delmericoc7681022022-02-04 21:01:20 +000075 })
76
77 for _, tc := range testCases {
78 javaLibraryName := fmt.Sprintf("java-protos_%s", tc.javaLibraryNameExtension)
79
Sam Delmerico3177a6e2022-06-21 19:28:33 +000080 runJavaProtoTestCase(t, Bp2buildTestCase{
81 Description: fmt.Sprintf("java_proto %s", tc.protoType),
82 Blueprint: fmt.Sprintf(bp, tc.protoType),
83 ExpectedBazelTargets: []string{
Sam Delmericoc7681022022-02-04 21:01:20 +000084 protoLibrary,
Alixe06d75b2022-08-31 18:28:19 +000085 MakeBazelTarget(
Sam Delmericoc7681022022-02-04 21:01:20 +000086 tc.javaLibraryType,
87 javaLibraryName,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000088 AttrNameToString{
Sam Delmericoc7681022022-02-04 21:01:20 +000089 "deps": `[":java-protos_proto"]`,
90 }),
Alixe06d75b2022-08-31 18:28:19 +000091 MakeBazelTarget("java_library", "java-protos", AttrNameToString{
Sam Delmericoc0161432022-02-25 21:34:51 +000092 "exports": fmt.Sprintf(`[":%s"]`, javaLibraryName),
Sam Delmericoc7681022022-02-04 21:01:20 +000093 }),
Alix341484b2022-10-31 19:08:18 +000094 MakeNeverlinkDuplicateTarget("java_library", "java-protos"),
Sam Delmericoc7681022022-02-04 21:01:20 +000095 },
96 })
97 }
98}
99
100func TestJavaProtoDefault(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000101 runJavaProtoTestCase(t, Bp2buildTestCase{
102 Description: "java_library proto default",
103 Blueprint: `java_library_static {
Sam Delmericoc7681022022-02-04 21:01:20 +0000104 name: "java-protos",
105 srcs: ["a.proto"],
Vinh Tran3ac6daf2022-04-22 19:09:58 -0400106 java_version: "7",
Sam Delmericoc7681022022-02-04 21:01:20 +0000107}
108`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000109 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000110 MakeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{
Sam Delmerico7a629092022-03-07 16:20:54 +0000111 "srcs": `["a.proto"]`,
Sam Delmericoc7681022022-02-04 21:01:20 +0000112 }),
Alixe06d75b2022-08-31 18:28:19 +0000113 MakeBazelTarget(
Sam Delmericoc7681022022-02-04 21:01:20 +0000114 "java_lite_proto_library",
115 "java-protos_java_proto_lite",
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000116 AttrNameToString{
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500117 "deps": `[":java-protos_proto"]`,
118 "java_version": `"7"`,
Sam Delmericoc7681022022-02-04 21:01:20 +0000119 }),
Alixe06d75b2022-08-31 18:28:19 +0000120 MakeBazelTarget("java_library", "java-protos", AttrNameToString{
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500121 "exports": `[":java-protos_java_proto_lite"]`,
122 "java_version": `"7"`,
Sam Delmericoc7681022022-02-04 21:01:20 +0000123 }),
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500124 MakeNeverlinkDuplicateTargetWithAttrs(
125 "java_library",
126 "java-protos",
127 AttrNameToString{"java_version": `"7"`}),
Sam Delmericoc7681022022-02-04 21:01:20 +0000128 },
129 })
130}