blob: 5d6b088144370a4e476fac40b3e942fb0e7163b0 [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"],
Liz Kammer02914402023-08-07 13:38:18 -040071 sdk_version: "current",
Sam Delmericoc7681022022-02-04 21:01:20 +000072}`
73
Alixe06d75b2022-08-31 18:28:19 +000074 protoLibrary := MakeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{
Sam Delmerico7a629092022-03-07 16:20:54 +000075 "srcs": `["a.proto"]`,
Sam Delmericoc7681022022-02-04 21:01:20 +000076 })
77
78 for _, tc := range testCases {
79 javaLibraryName := fmt.Sprintf("java-protos_%s", tc.javaLibraryNameExtension)
80
Sam Delmerico3177a6e2022-06-21 19:28:33 +000081 runJavaProtoTestCase(t, Bp2buildTestCase{
82 Description: fmt.Sprintf("java_proto %s", tc.protoType),
83 Blueprint: fmt.Sprintf(bp, tc.protoType),
84 ExpectedBazelTargets: []string{
Sam Delmericoc7681022022-02-04 21:01:20 +000085 protoLibrary,
Alixe06d75b2022-08-31 18:28:19 +000086 MakeBazelTarget(
Sam Delmericoc7681022022-02-04 21:01:20 +000087 tc.javaLibraryType,
88 javaLibraryName,
Sam Delmerico3177a6e2022-06-21 19:28:33 +000089 AttrNameToString{
Liz Kammer02914402023-08-07 13:38:18 -040090 "deps": `[":java-protos_proto"]`,
91 "sdk_version": `"current"`,
Sam Delmericoc7681022022-02-04 21:01:20 +000092 }),
Alixe06d75b2022-08-31 18:28:19 +000093 MakeBazelTarget("java_library", "java-protos", AttrNameToString{
Liz Kammer02914402023-08-07 13:38:18 -040094 "exports": fmt.Sprintf(`[":%s"]`, javaLibraryName),
95 "sdk_version": `"current"`,
Sam Delmericoc7681022022-02-04 21:01:20 +000096 }),
Alix341484b2022-10-31 19:08:18 +000097 MakeNeverlinkDuplicateTarget("java_library", "java-protos"),
Sam Delmericoc7681022022-02-04 21:01:20 +000098 },
99 })
100 }
101}
102
103func TestJavaProtoDefault(t *testing.T) {
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000104 runJavaProtoTestCase(t, Bp2buildTestCase{
105 Description: "java_library proto default",
106 Blueprint: `java_library_static {
Sam Delmericoc7681022022-02-04 21:01:20 +0000107 name: "java-protos",
108 srcs: ["a.proto"],
Vinh Tran3ac6daf2022-04-22 19:09:58 -0400109 java_version: "7",
Liz Kammer02914402023-08-07 13:38:18 -0400110 sdk_version: "current",
Sam Delmericoc7681022022-02-04 21:01:20 +0000111}
112`,
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000113 ExpectedBazelTargets: []string{
Alixe06d75b2022-08-31 18:28:19 +0000114 MakeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{
Sam Delmerico7a629092022-03-07 16:20:54 +0000115 "srcs": `["a.proto"]`,
Sam Delmericoc7681022022-02-04 21:01:20 +0000116 }),
Alixe06d75b2022-08-31 18:28:19 +0000117 MakeBazelTarget(
Sam Delmericoc7681022022-02-04 21:01:20 +0000118 "java_lite_proto_library",
119 "java-protos_java_proto_lite",
Sam Delmerico3177a6e2022-06-21 19:28:33 +0000120 AttrNameToString{
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500121 "deps": `[":java-protos_proto"]`,
122 "java_version": `"7"`,
Liz Kammer02914402023-08-07 13:38:18 -0400123 "sdk_version": `"current"`,
Sam Delmericoc7681022022-02-04 21:01:20 +0000124 }),
Alixe06d75b2022-08-31 18:28:19 +0000125 MakeBazelTarget("java_library", "java-protos", AttrNameToString{
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500126 "exports": `[":java-protos_java_proto_lite"]`,
127 "java_version": `"7"`,
Liz Kammer02914402023-08-07 13:38:18 -0400128 "sdk_version": `"current"`,
Sam Delmericoc7681022022-02-04 21:01:20 +0000129 }),
Romain Jobredeaux2eef2e12023-02-24 12:07:08 -0500130 MakeNeverlinkDuplicateTargetWithAttrs(
131 "java_library",
132 "java-protos",
Liz Kammer02914402023-08-07 13:38:18 -0400133 AttrNameToString{
134 "java_version": `"7"`,
135 "sdk_version": `"current"`,
136 }),
Sam Delmericoc7681022022-02-04 21:01:20 +0000137 },
138 })
139}