From 1dbde95d844378121af54f16d9f8aa9f0f7fc2f2 Mon Sep 17 00:00:00 2001 From: Lucio Franco Date: Wed, 23 Oct 2019 15:01:04 -0400 Subject: [PATCH] fix(build): Fix service and rpc name conflict (#92) Closes #89 --- Cargo.toml | 3 +++ tests/same_name/Cargo.toml | 16 ++++++++++++++++ tests/same_name/build.rs | 3 +++ tests/same_name/proto/foo.proto | 11 +++++++++++ tests/same_name/src/lib.rs | 3 +++ tests/wellknown/Cargo.toml | 17 +++++++++++++++++ tests/wellknown/build.rs | 3 +++ .../wellknown/proto}/wellknown.proto | 0 tests/wellknown/src/lib.rs | 3 +++ tonic-build/src/server.rs | 8 ++++---- tonic-build/tests/wellknown.rs | 12 ------------ 11 files changed, 63 insertions(+), 16 deletions(-) create mode 100644 tests/same_name/Cargo.toml create mode 100644 tests/same_name/build.rs create mode 100644 tests/same_name/proto/foo.proto create mode 100644 tests/same_name/src/lib.rs create mode 100644 tests/wellknown/Cargo.toml create mode 100644 tests/wellknown/build.rs rename {tonic-build/tests/protos => tests/wellknown/proto}/wellknown.proto (100%) create mode 100644 tests/wellknown/src/lib.rs delete mode 100644 tonic-build/tests/wellknown.rs diff --git a/Cargo.toml b/Cargo.toml index bbcce3dc2..a0febc44e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,4 +4,7 @@ members = [ "tonic-build", "tonic-examples", "tonic-interop", + + "tests/same_name", + "tests/wellknown", ] diff --git a/tests/same_name/Cargo.toml b/tests/same_name/Cargo.toml new file mode 100644 index 000000000..926997d0b --- /dev/null +++ b/tests/same_name/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "same_name" +version = "0.1.0" +authors = ["Lucio Franco "] +edition = "2018" +publish = false + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tonic = { path = "../../tonic" } +bytes = "0.4" +prost = "0.5" + +[build-dependencies] +tonic-build = { path = "../../tonic-build" } diff --git a/tests/same_name/build.rs b/tests/same_name/build.rs new file mode 100644 index 000000000..ba5ab11cf --- /dev/null +++ b/tests/same_name/build.rs @@ -0,0 +1,3 @@ +fn main() { + tonic_build::compile_protos("proto/foo.proto").unwrap(); +} diff --git a/tests/same_name/proto/foo.proto b/tests/same_name/proto/foo.proto new file mode 100644 index 000000000..7c8c155b8 --- /dev/null +++ b/tests/same_name/proto/foo.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; + +package foo; + +service Foo { + rpc Foo(stream FooRequest) returns (stream FooResponse) {} +} + +message FooRequest {} + +message FooResponse {} \ No newline at end of file diff --git a/tests/same_name/src/lib.rs b/tests/same_name/src/lib.rs new file mode 100644 index 000000000..0c5549a13 --- /dev/null +++ b/tests/same_name/src/lib.rs @@ -0,0 +1,3 @@ +pub mod pb { + tonic::include_proto!("foo"); +} diff --git a/tests/wellknown/Cargo.toml b/tests/wellknown/Cargo.toml new file mode 100644 index 000000000..c48298346 --- /dev/null +++ b/tests/wellknown/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "wellknown" +version = "0.1.0" +authors = ["Lucio Franco "] +edition = "2018" +publish = false + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tonic = { path = "../../tonic" } +bytes = "0.4" +prost = "0.5" +prost-types = "0.5" + +[build-dependencies] +tonic-build = { path = "../../tonic-build" } diff --git a/tests/wellknown/build.rs b/tests/wellknown/build.rs new file mode 100644 index 000000000..b3952daff --- /dev/null +++ b/tests/wellknown/build.rs @@ -0,0 +1,3 @@ +fn main() { + tonic_build::compile_protos("proto/wellknown.proto").unwrap(); +} diff --git a/tonic-build/tests/protos/wellknown.proto b/tests/wellknown/proto/wellknown.proto similarity index 100% rename from tonic-build/tests/protos/wellknown.proto rename to tests/wellknown/proto/wellknown.proto diff --git a/tests/wellknown/src/lib.rs b/tests/wellknown/src/lib.rs new file mode 100644 index 000000000..169ed0c3e --- /dev/null +++ b/tests/wellknown/src/lib.rs @@ -0,0 +1,3 @@ +pub mod pb { + tonic::include_proto!("wellknown"); +} diff --git a/tonic-build/src/server.rs b/tonic-build/src/server.rs index d19f45a7d..92295e91d 100644 --- a/tonic-build/src/server.rs +++ b/tonic-build/src/server.rs @@ -223,7 +223,7 @@ fn generate_unary( proto_path: &str, server_trait: Ident, ) -> TokenStream { - let service_ident = Ident::new(&method.proto_name, Span::call_site()); + let service_ident = quote::format_ident!("{}Svc", method.proto_name); let (request, response) = crate::replace_wellknown(proto_path, &method); @@ -262,7 +262,7 @@ fn generate_server_streaming( proto_path: &str, server_trait: Ident, ) -> TokenStream { - let service_ident = Ident::new(&method.proto_name, Span::call_site()); + let service_ident = quote::format_ident!("{}Svc", method.proto_name); let (request, response) = crate::replace_wellknown(proto_path, &method); @@ -305,7 +305,7 @@ fn generate_client_streaming( proto_path: &str, server_trait: Ident, ) -> TokenStream { - let service_ident = Ident::new(&method.proto_name, Span::call_site()); + let service_ident = quote::format_ident!("{}Svc", method.proto_name); let (request, response) = crate::replace_wellknown(proto_path, &method); @@ -346,7 +346,7 @@ fn generate_streaming( proto_path: &str, server_trait: Ident, ) -> TokenStream { - let service_ident = Ident::new(&method.proto_name, Span::call_site()); + let service_ident = quote::format_ident!("{}Svc", method.proto_name); let (request, response) = crate::replace_wellknown(proto_path, &method); diff --git a/tonic-build/tests/wellknown.rs b/tonic-build/tests/wellknown.rs deleted file mode 100644 index 51aa89647..000000000 --- a/tonic-build/tests/wellknown.rs +++ /dev/null @@ -1,12 +0,0 @@ -#[test] -fn wellknown() { - let tmp = std::env::temp_dir(); - tonic_build::configure() - .out_dir(tmp) - .format(false) - .type_attribute(".", "#[derive(Serialize, Deserialize)]") - .type_attribute(".", "#[serde(rename_all = \"camelCase\")]") - .field_attribute("in", "#[serde(rename = \"in\")]") - .compile(&["tests/protos/wellknown.proto"], &["tests/protos"]) - .unwrap(); -}