Skip to content

Commit 316519e

Browse files
author
Dave Masselink
authored
Ensure com_google_api's service protos are correctly built (#9)
Add a test case for exercising ES6 generation of proto files using the `extend` keyword. Builds on work in `protobuf-javascript` repo: [PR#8](gonzojive/protobuf-javascript#8).
1 parent 1af3381 commit 316519e

File tree

10 files changed

+154
-21
lines changed

10 files changed

+154
-21
lines changed

e2e/typescript_proto_usage/BUILD.bazel

Lines changed: 82 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ load("@bazel_gazelle//:def.bzl", "gazelle")
66
load("@com_github_gonzojive_rules_ts_proto//ts_proto:defs.bzl", "ts_proto_library")
77
load("@aspect_rules_esbuild//esbuild:defs.bzl", "esbuild")
88
load("@example_npm//:defs.bzl", example_npm_link_all_packages = "npm_link_all_packages")
9-
10-
#load("@rules_ts_proto_npm//:defs.bzl", ts_proto_link_all_packages = "npm_link_all_packages")
119
load("@aspect_rules_js//js:defs.bzl", "js_binary")
1210

1311
# Replace with a usage of your rule/macro
@@ -80,9 +78,86 @@ js_binary(
8078

8179
example_npm_link_all_packages(name = "node_modules")
8280

83-
#ts_proto_link_all_packages(name = "node_modules")
81+
proto_library(
82+
name = "extending_proto",
83+
srcs = ["extending.proto"],
84+
import_prefix = "github.com/gonzojive/rules_ts_proto/example/prefix",
85+
deps = [
86+
"@com_google_protobuf//:descriptor_proto",
87+
"@com_google_api//google/longrunning:operations_proto",
88+
],
89+
)
90+
91+
ts_proto_library(
92+
name = "extending_ts_proto",
93+
proto = ":extending_proto",
94+
visibility = ["//visibility:public"],
95+
deps = [
96+
":descriptor_ts_proto",
97+
":operations_ts_proto",
98+
],
99+
)
100+
101+
ts_proto_library(
102+
name = "operations_ts_proto",
103+
proto = "@com_google_api//google/longrunning:operations_proto",
104+
deps = [
105+
":annotations_ts_proto",
106+
":any_ts_proto",
107+
":client_ts_proto",
108+
":descriptor_ts_proto",
109+
":duration_ts_proto",
110+
":empty_ts_proto",
111+
":status_ts_proto",
112+
],
113+
)
114+
115+
ts_proto_library(
116+
name = "annotations_ts_proto",
117+
proto = "@com_google_api//google/api:annotations_proto",
118+
deps = [
119+
":descriptor_ts_proto",
120+
":http_ts_proto",
121+
],
122+
)
123+
124+
ts_proto_library(
125+
name = "any_ts_proto",
126+
proto = "@com_google_protobuf//:any_proto",
127+
)
128+
129+
ts_proto_library(
130+
name = "client_ts_proto",
131+
proto = "@com_google_api//google/api:client_proto",
132+
deps = [
133+
":descriptor_ts_proto",
134+
],
135+
)
136+
137+
ts_proto_library(
138+
name = "descriptor_ts_proto",
139+
proto = "@com_google_protobuf//:descriptor_proto",
140+
)
84141

85-
# npm_link_package(
86-
# name = "node_modules/google-protobuf",
87-
# src = "//google-protobuf-debug:google-protobuf",
88-
# )
142+
ts_proto_library(
143+
name = "duration_ts_proto",
144+
proto = "@com_google_protobuf//:duration_proto",
145+
)
146+
147+
ts_proto_library(
148+
name = "empty_ts_proto",
149+
proto = "@com_google_protobuf//:empty_proto",
150+
)
151+
152+
ts_proto_library(
153+
name = "http_ts_proto",
154+
proto = "@com_google_api//google/api:http_proto",
155+
)
156+
157+
ts_proto_library(
158+
name = "status_ts_proto",
159+
proto = "@com_google_api//google/rpc:status_proto",
160+
deps = [
161+
":any_ts_proto",
162+
],
163+
)

e2e/typescript_proto_usage/WORKSPACE.bazel

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,16 @@ esbuild_register_toolchains(
187187
name = "esbuild",
188188
esbuild_version = ESBUILD_VERSION,
189189
)
190+
191+
##############################################################################
192+
# Google API Common Language Imports
193+
##############################################################################
194+
195+
load("@com_google_api//:repository_rules.bzl", "switched_rules_by_language")
196+
197+
switched_rules_by_language(
198+
name = "com_google_googleapis_imports",
199+
go = True,
200+
grpc = True,
201+
java = True,
202+
)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
syntax = "proto3";
2+
3+
package com.example.extending;
4+
5+
import "google/protobuf/descriptor.proto";
6+
import "google/longrunning/operations.proto";
7+
8+
extend google.protobuf.MethodOptions {
9+
double foo = 999999;
10+
}
11+
12+
message ExampleMessage {
13+
google.longrunning.Operation foo = 1;
14+
}
Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +0,0 @@
1-
# load("@aspect_rules_js//npm:defs.bzl", "npm_package")
2-
3-
# npm_package(
4-
# name = "google-protobuf",
5-
# srcs = [
6-
# "google-protobuf.js",
7-
# "google-protobuf.js.map",
8-
# "package.json",
9-
# ],
10-
# package = "google-protobuf",
11-
# visibility = ["//visibility:public"],
12-
# )
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
load("@aspect_rules_jasmine//jasmine:defs.bzl", "jasmine_test")
2+
3+
jasmine_test(
4+
name = "test",
5+
args = ["*.spec.js"],
6+
chdir = package_name(),
7+
data = [
8+
"extending.spec.js",
9+
"package.json",
10+
"//:extending_ts_proto",
11+
],
12+
)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { ExampleMessage } from "../../extending_pb.mjs"
2+
3+
describe("Extending proto", () => {
4+
it("should have example message defined", () => {
5+
expect(new ExampleMessage()).not.toBeUndefined();
6+
});
7+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "module"
3+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"compilerOptions": {
3+
"baseUrl": "./",
4+
"paths": {
5+
"*": ["./", "../../bazel-bin/tests/extending_jasmine"]
6+
}
7+
}
8+
}

e2e/typescript_proto_usage/tests/greeting_jasmine/greeting.spec.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { Ancestor1, GreetingRequest, TopLevelEnumExample, RepeatedThing, MutuallyExclusiveThing } from "../../greeting_pb.mjs"
22
import { Position } from "../../location/location_pb.mjs"
3-
//import { GreetingRequest } from "../../greeting_pb";
43

54
function say_hi() {
65
return new GreetingRequest().setName("hello").getName();

ts_proto/repositories.bzl

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def rules_ts_proto_dependencies():
4545

4646
git_repository(
4747
name = "com_google_protobuf_javascript",
48-
commit = "885b9cdad5acc46d67f3850155d34226e2b4ee8b",
48+
commit = "7f11c3ec881adcad71c1c53b185fba9b3c55b9d5",
4949
remote = "https://github.com/gonzojive/protobuf-javascript.git",
5050
)
5151

@@ -113,3 +113,17 @@ def rules_ts_proto_dependencies():
113113
commit = "f6eb07753a3d004ea0022eec541bed975e7fa0e8",
114114
remote = "https://github.com/gonzojive/grpc-web.git",
115115
)
116+
117+
git_repository(
118+
name = "com_google_api",
119+
commit = "f454c15b49a13f8834002814a62fd22d67c521c4",
120+
remote = "https://github.com/googleapis/googleapis.git",
121+
shallow_since = "1658776854 +0000",
122+
)
123+
124+
git_repository(
125+
name = "io_grpc_grpc_java",
126+
commit = "3500243f4320fcde1d567184b822c98de017498e",
127+
remote = "https://github.com/grpc/grpc-java.git",
128+
shallow_since = "1650910743 -0700",
129+
)

0 commit comments

Comments
 (0)