fix(build): Don't replace extern_paths (#261)
* don't replace extern_path'd paths tonic-build will replace all paths except for google well known types with one rooted at the super module. For paths that have already been replaced with a fully qualified path via the extern_path config option, (e.g. "::uuid::Uuid"), this results in an invalid path (e.g. "super::::uuid::Uuid"), and a build failure. These paths should also be excluded when prefixing relative modules with super. * add doc in tonic-build clarifying extern_path extern_path expects fully qualified proto and rust paths * add test cast case for extern path fix add a test that extern path does indeed result in service types using the specified type from an external crate. we test this by creating a service type that has a proto from a different crate, and asserting that it does indeed impl a trait from that crate * add license/publish to extern_path test crates
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
[package]
|
||||
name = "uuid"
|
||||
version = "0.1.0"
|
||||
authors = ["Danny Hua <[email protected]>"]
|
||||
edition = "2018"
|
||||
publish = false
|
||||
license = "MIT"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
prost = "0.6"
|
||||
bytes = "0.5"
|
||||
[build-dependencies]
|
||||
prost-build = "0.6"
|
||||
@@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
prost_build::compile_protos(&["uuid/uuid.proto"], &["../proto/"]).unwrap();
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
include!(concat!(env!("OUT_DIR"), "/uuid.rs"));
|
||||
|
||||
pub trait DoSomething {
|
||||
fn do_it(&self) -> String;
|
||||
}
|
||||
|
||||
impl DoSomething for Uuid {
|
||||
fn do_it(&self) -> String {
|
||||
"Done".to_string()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user