diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a75bf6a1..1a29979a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -54,10 +54,6 @@ jobs: - rust: nightly features: "--features nightly" benches: true - # Limit the Happy Eyeballs tests to Linux - - rust: stable - os: ubuntu-latest - features: "--features __internal_happy_eyeballs_tests" runs-on: ${{ matrix.os }} @@ -85,6 +81,35 @@ jobs: command: test args: --benches ${{ matrix.features }} + features: + name: Test Feature ${{ matrix.features }} + needs: [style] + strategy: + matrix: + features: + - "--features __internal_happy_eyeballs_tests" + - "--no-default-features --features tcp" + - "--no-default-features" + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Test + uses: actions-rs/cargo@v1 + with: + command: test + args: ${{ matrix.features }} + doc: name: Build docs needs: [style, test] diff --git a/Cargo.toml b/Cargo.toml index 2010cba4..d27e9df8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -137,6 +137,11 @@ name = "send_file" path = "examples/send_file.rs" required-features = ["runtime"] +[[example]] +name = "service_struct_impl" +path = "examples/service_struct_impl.rs" +required-features = ["runtime"] + [[example]] name = "single_threaded" path = "examples/single_threaded.rs" diff --git a/src/body/body.rs b/src/body/body.rs index a83bad0d..34227b05 100644 --- a/src/body/body.rs +++ b/src/body/body.rs @@ -11,6 +11,7 @@ use futures_util::TryStreamExt; use http::HeaderMap; use http_body::{Body as HttpBody, SizeHint}; +#[cfg(feature = "stream")] use crate::common::sync_wrapper::SyncWrapper; use crate::common::{task, watch, Future, Never, Pin, Poll}; use crate::proto::h2::ping; diff --git a/src/client/connect/mod.rs b/src/client/connect/mod.rs index 783c17b4..68375c61 100644 --- a/src/client/connect/mod.rs +++ b/src/client/connect/mod.rs @@ -26,6 +26,8 @@ //! Or, fully written out: //! //! ``` +//! # #[cfg(feature = "runtime")] +//! # mod rt { //! use std::{future::Future, net::SocketAddr, pin::Pin, task::{self, Poll}}; //! use hyper::{service::Service, Uri}; //! use tokio::net::TcpStream; @@ -50,6 +52,7 @@ //! Box::pin(TcpStream::connect(SocketAddr::from(([127, 0, 0, 1], 1337)))) //! } //! } +//! # } //! ``` //! //! It's worth noting that for `TcpStream`s, the [`HttpConnector`][] is a @@ -59,11 +62,14 @@ //! `Client` like this: //! //! ``` +//! # #[cfg(feature = "runtime")] +//! # fn rt () { //! # let connector = hyper::client::HttpConnector::new(); //! // let connector = ... //! //! let client = hyper::Client::builder() //! .build::<_, hyper::Body>(connector); +//! # } //! ``` //! //! diff --git a/src/client/mod.rs b/src/client/mod.rs index 1a5ed0f4..87d73081 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -73,6 +73,7 @@ pub(crate) mod dispatch; mod pool; pub mod service; #[cfg(test)] +#[cfg(feature = "runtime")] mod tests; /// A Client to make outgoing HTTP requests. diff --git a/src/common/mod.rs b/src/common/mod.rs index d9d62bc2..edd61acf 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -13,6 +13,7 @@ pub(crate) mod exec; pub(crate) mod io; mod lazy; mod never; +#[cfg(feature = "stream")] pub(crate) mod sync_wrapper; pub(crate) mod task; pub(crate) mod watch; diff --git a/src/server/conn.rs b/src/server/conn.rs index 56fe4c58..0fe7a22a 100644 --- a/src/server/conn.rs +++ b/src/server/conn.rs @@ -11,6 +11,8 @@ //! ## Example //! A simple example that uses the `Http` struct to talk HTTP over a Tokio TCP stream //! ```no_run +//! # #[cfg(feature = "runtime")] +//! # mod rt { //! use http::{Request, Response, StatusCode}; //! use hyper::{server::conn::Http, service::service_fn, Body}; //! use std::{net::SocketAddr, convert::Infallible}; @@ -38,6 +40,7 @@ //! async fn hello(_req: Request) -> Result, Infallible> { //! Ok(Response::new(Body::from("Hello World!"))) //! } +//! # } //! ``` use std::error::Error as StdError;