From 4e3db917d939e91939e02dbe4cab525b784132ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Oliveira?= Date: Sat, 28 Dec 2019 18:07:28 +0000 Subject: [PATCH] - fix known_enum macro to allow attributes such as features, fixes #352 - add step test for --no-default-features - remove no longer used travis badge --- .github/workflows/ci.yml | 3 +++ README.md | 1 - src/reject.rs | 13 ++++++++++--- src/test.rs | 1 + 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53fb0db15..21c519f26 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,6 +45,9 @@ jobs: benches: true - build: tls features: "--features tls" + - build: no-default-features + features: "--no-default-features" + steps: - name: Checkout diff --git a/README.md b/README.md index 25f6e779a..bc05b3c39 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # warp [![GHA Build Status](https://github.com/seanmonstar/warp/workflows/CI/badge.svg)](https://github.com/seanmonstar/warp/actions?query=workflow%3ACI) -[![Travis Build Status](https://travis-ci.org/seanmonstar/warp.svg?branch=master)](https://travis-ci.org/seanmonstar/warp) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![crates.io](https://img.shields.io/crates/v/warp.svg)](https://crates.io/crates/warp) [![Released API docs](https://docs.rs/warp/badge.svg)](https://docs.rs/warp) diff --git a/src/reject.rs b/src/reject.rs index be7f8ee27..4bb9bcdcd 100644 --- a/src/reject.rs +++ b/src/reject.rs @@ -190,9 +190,10 @@ enum Rejections { } macro_rules! enum_known { - ($($var:ident($ty:path),)+) => ( + ($($(#[$attr:meta])* $var:ident($ty:path),)+) => ( pub(crate) enum Known { $( + $(#[$attr])* $var($ty), )+ } @@ -201,6 +202,7 @@ macro_rules! enum_known { fn inner_as_any(&self) -> &dyn Any { match *self { $( + $(#[$attr])* Known::$var(ref t) => t, )+ } @@ -211,6 +213,7 @@ macro_rules! enum_known { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { $( + $(#[$attr])* Known::$var(ref t) => t.fmt(f), )+ } @@ -221,6 +224,7 @@ macro_rules! enum_known { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match *self { $( + $(#[$attr])* Known::$var(ref t) => t.fmt(f), )+ } @@ -229,6 +233,7 @@ macro_rules! enum_known { $( #[doc(hidden)] + $(#[$attr])* impl From<$ty> for Known { fn from(ty: $ty) -> Known { Known::$var(ty) @@ -250,6 +255,7 @@ enum_known! { BodyReadError(crate::body::BodyReadError), BodyDeserializeError(crate::body::BodyDeserializeError), CorsForbidden(crate::cors::CorsForbidden), + #[cfg(feature = "websocket")] MissingConnectionUpgrade(crate::ws::MissingConnectionUpgrade), MissingExtension(crate::ext::MissingExtension), ReplyHttpError(crate::reply::ReplyHttpError), @@ -378,8 +384,9 @@ impl Rejections { | Known::MissingCookie(_) | Known::InvalidQuery(_) | Known::BodyReadError(_) - | Known::BodyDeserializeError(_) - | Known::MissingConnectionUpgrade(_) => StatusCode::BAD_REQUEST, + | Known::BodyDeserializeError(_) => StatusCode::BAD_REQUEST, + #[cfg(feature = "websocket")] + Known::MissingConnectionUpgrade(_) => StatusCode::BAD_REQUEST, Known::LengthRequired(_) => StatusCode::LENGTH_REQUIRED, Known::PayloadTooLarge(_) => StatusCode::PAYLOAD_TOO_LARGE, Known::UnsupportedMediaType(_) => StatusCode::UNSUPPORTED_MEDIA_TYPE, diff --git a/src/test.rs b/src/test.rs index c64d08d02..1b4707296 100644 --- a/src/test.rs +++ b/src/test.rs @@ -86,6 +86,7 @@ use std::future::Future; use std::net::SocketAddr; #[cfg(feature = "websocket")] use std::pin::Pin; +#[cfg(feature = "websocket")] use std::task::{self, Poll}; use bytes::Bytes;