diff --git a/actix-web-codegen/tests/trybuild.rs b/actix-web-codegen/tests/trybuild.rs index b2d9ce186..a39064ad7 100644 --- a/actix-web-codegen/tests/trybuild.rs +++ b/actix-web-codegen/tests/trybuild.rs @@ -6,6 +6,9 @@ fn compile_macros() { t.pass("tests/trybuild/simple.rs"); t.compile_fail("tests/trybuild/simple-fail.rs"); + t.pass("tests/trybuild/visibility-ok.rs"); + t.compile_fail("tests/trybuild/visibility-fail.rs"); + t.pass("tests/trybuild/route-ok.rs"); t.compile_fail("tests/trybuild/route-missing-method-fail.rs"); t.compile_fail("tests/trybuild/route-duplicate-method-fail.rs"); diff --git a/actix-web-codegen/tests/trybuild/visibility-fail.rs b/actix-web-codegen/tests/trybuild/visibility-fail.rs new file mode 100644 index 000000000..2b7cdfa08 --- /dev/null +++ b/actix-web-codegen/tests/trybuild/visibility-fail.rs @@ -0,0 +1,20 @@ +use actix_web::App; + +mod config { + use actix_web_codegen::*; + use actix_web::{Responder, HttpResponse}; + + #[get("/config")] + async fn config() -> impl Responder { + HttpResponse::Ok() + } +} + +#[actix_web::main] +async fn main() { + let srv = actix_test::start(|| App::new().service(config::config)); + + let request = srv.get("/config"); + let response = request.send().await.unwrap(); + assert!(response.status().is_success()); +} diff --git a/actix-web-codegen/tests/trybuild/visibility-fail.stderr b/actix-web-codegen/tests/trybuild/visibility-fail.stderr new file mode 100644 index 000000000..e44acc010 --- /dev/null +++ b/actix-web-codegen/tests/trybuild/visibility-fail.stderr @@ -0,0 +1,12 @@ +error[E0603]: unit struct `config` is private + --> tests/trybuild/visibility-fail.rs:15:63 + | +15 | let srv = actix_test::start(|| App::new().service(config::config)); + | ^^^^^^ private unit struct + | +note: the unit struct `config` is defined here + --> tests/trybuild/visibility-fail.rs:7:5 + | +7 | #[get("/config")] + | ^^^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `get` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/actix-web-codegen/tests/trybuild/visibility-ok.rs b/actix-web-codegen/tests/trybuild/visibility-ok.rs new file mode 100644 index 000000000..2f531efe9 --- /dev/null +++ b/actix-web-codegen/tests/trybuild/visibility-ok.rs @@ -0,0 +1,20 @@ +use actix_web::App; + +mod config { + use actix_web_codegen::*; + use actix_web::{Responder, HttpResponse}; + + #[get("/config")] + pub async fn config() -> impl Responder { + HttpResponse::Ok() + } +} + +#[actix_web::main] +async fn main() { + let srv = actix_test::start(|| App::new().service(config::config)); + + let request = srv.get("/config"); + let response = request.send().await.unwrap(); + assert!(response.status().is_success()); +}