From 13239dc1811b990db8322122a6528ca90f5129da Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 27 Mar 2022 14:43:00 -0400 Subject: [PATCH 1/4] fix test build with some feature combinations --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index f7a93a1959..3a2202dff6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,7 +2,7 @@ #![deny(missing_debug_implementations)] #![cfg_attr(test, deny(rust_2018_idioms))] #![cfg_attr(all(test, feature = "full"), deny(unreachable_pub))] -#![cfg_attr(test, deny(warnings))] +#![cfg_attr(all(test, feature = "full"), deny(warnings))] #![cfg_attr(all(test, feature = "nightly"), feature(test))] #![cfg_attr(docsrs, feature(doc_cfg))] From 4d90aa91ebbc93a892927149e2da6d941b0fc009 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 27 Mar 2022 15:17:44 -0400 Subject: [PATCH 2/4] fix running tests with server,client but without runtime --- src/proto/h1/io.rs | 3 +++ src/proto/h1/role.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/proto/h1/io.rs b/src/proto/h1/io.rs index 08a3993684..51f33788f2 100644 --- a/src/proto/h1/io.rs +++ b/src/proto/h1/io.rs @@ -727,8 +727,11 @@ mod tests { cached_headers: &mut None, req_method: &mut None, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, diff --git a/src/proto/h1/role.rs b/src/proto/h1/role.rs index 968b63cb8e..bed7b7e37b 100644 --- a/src/proto/h1/role.rs +++ b/src/proto/h1/role.rs @@ -1474,8 +1474,11 @@ mod tests { cached_headers: &mut None, req_method: &mut method, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1504,8 +1507,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(crate::Method::GET), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1529,8 +1535,11 @@ mod tests { cached_headers: &mut None, req_method: &mut None, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1552,8 +1561,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(crate::Method::GET), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: true, @@ -1577,8 +1589,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(crate::Method::GET), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1606,8 +1621,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(crate::Method::GET), h1_parser_config, + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1632,8 +1650,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(crate::Method::GET), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1653,8 +1674,11 @@ mod tests { cached_headers: &mut None, req_method: &mut None, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: true, h09_responses: false, @@ -1695,8 +1719,11 @@ mod tests { cached_headers: &mut None, req_method: &mut None, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1718,8 +1745,11 @@ mod tests { cached_headers: &mut None, req_method: &mut None, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1950,8 +1980,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(Method::GET), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1973,8 +2006,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(m), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -1996,8 +2032,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(Method::GET), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -2496,8 +2535,11 @@ mod tests { cached_headers: &mut None, req_method: &mut Some(Method::GET), h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -2583,8 +2625,11 @@ mod tests { cached_headers: &mut headers, req_method: &mut None, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, @@ -2626,8 +2671,11 @@ mod tests { cached_headers: &mut headers, req_method: &mut None, h1_parser_config: Default::default(), + #[cfg(feature = "runtime")] h1_header_read_timeout: None, + #[cfg(feature = "runtime")] h1_header_read_timeout_fut: &mut None, + #[cfg(feature = "runtime")] h1_header_read_timeout_running: &mut false, preserve_header_case: false, h09_responses: false, From 43215216dc6b09170da6ae917d1ab79e6fc76374 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 27 Mar 2022 15:45:01 -0400 Subject: [PATCH 3/4] fix doctests without runtime,tcp features --- src/body/to_bytes.rs | 2 +- src/server/mod.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/body/to_bytes.rs b/src/body/to_bytes.rs index c3c48d3440..62b15a54a9 100644 --- a/src/body/to_bytes.rs +++ b/src/body/to_bytes.rs @@ -17,7 +17,7 @@ use super::HttpBody; /// # Example /// /// ``` -/// # #[cfg(all(feature = "client", any(feature = "http1", feature = "http2")))] +/// # #[cfg(all(feature = "client", feature = "tcp", any(feature = "http1", feature = "http2")))] /// # async fn doc() -> hyper::Result<()> { /// use hyper::{body::HttpBody}; /// diff --git a/src/server/mod.rs b/src/server/mod.rs index b5508aefdd..e763d0e7c0 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -91,6 +91,7 @@ //! use std::net::SocketAddr; //! use hyper::{Body, Request, Response, Server}; //! use hyper::service::{make_service_fn, service_fn}; +//! # #[cfg(feature = "runtime")] //! use hyper::server::conn::AddrStream; //! //! #[derive(Clone)] From 2777ac8bedd0abf6f12bf483c498ea357ba3c709 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 27 Mar 2022 14:44:50 -0400 Subject: [PATCH 4/4] run tests with Miri --- .github/workflows/CI.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 6df6dfee79..706dbc076c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -16,6 +16,7 @@ jobs: - style - test - msrv + - miri - features - ffi - ffi-header @@ -124,6 +125,27 @@ jobs: command: check args: --features full + miri: + name: Test with Miri + needs: [style] + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + components: miri + override: true + + - name: Test + # Can't enable tcp feature since Miri does not support the tokio runtime + run: MIRIFLAGS="-Zmiri-disable-isolation" cargo miri test --features http1,http2,client,server,stream,nightly + features: name: features needs: [style]