From b2cc95292dcee781cb4c5d3c9bd4405d75830726 Mon Sep 17 00:00:00 2001 From: Cobalt Date: Tue, 29 Mar 2022 00:07:39 +0200 Subject: [PATCH] test: Add trybuild tests for codegen visibility --- actix-web-codegen/tests/trybuild.rs | 3 +++ .../tests/trybuild/visibility-fail.rs | 20 +++++++++++++++++++ .../tests/trybuild/visibility-fail.stderr | 12 +++++++++++ .../tests/trybuild/visibility-ok.rs | 20 +++++++++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 actix-web-codegen/tests/trybuild/visibility-fail.rs create mode 100644 actix-web-codegen/tests/trybuild/visibility-fail.stderr create mode 100644 actix-web-codegen/tests/trybuild/visibility-ok.rs 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()); +}