Make the blocking API an optional feature (default off)

This commit is contained in:
Sean McArthur
2019-09-17 15:06:10 -07:00
parent 0a87d3d7da
commit 7e3c1bc461
11 changed files with 71 additions and 49 deletions

View File

@@ -1,11 +1,11 @@
#[macro_use]
mod support;
use std::io::{Read, Write};
use std::io::Write;
use std::time::Duration;
#[test]
fn test_gzip_response() {
#[tokio::test]
async fn test_gzip_response() {
let content: String = (0..50).into_iter().map(|i| format!("test {}", i)).collect();
let chunk_size = content.len() / 3;
let mut encoder = libflate::gzip::Encoder::new(Vec::new()).unwrap();
@@ -41,16 +41,16 @@ fn test_gzip_response() {
write_timeout: Duration::from_millis(10),
response: response
};
let mut res = reqwest::blocking::get(&format!("http://{}/gzip", server.addr())).unwrap();
let url = format!("http://{}/gzip", server.addr());
let res = reqwest::get(&url).await.unwrap();
let mut body = String::new();
res.read_to_string(&mut body).unwrap();
let body = res.text().await.unwrap();
assert_eq!(body, content);
}
#[test]
fn test_gzip_empty_body() {
#[tokio::test]
async fn test_gzip_empty_body() {
let server = server! {
request: b"\
HEAD /gzip HTTP/1.1\r\n\
@@ -68,20 +68,20 @@ fn test_gzip_empty_body() {
\r\n"
};
let client = reqwest::blocking::Client::new();
let mut res = client
let client = reqwest::Client::new();
let res = client
.head(&format!("http://{}/gzip", server.addr()))
.send()
.await
.unwrap();
let mut body = std::string::String::new();
res.read_to_string(&mut body).unwrap();
let body = res.text().await.unwrap();
assert_eq!(body, "");
}
#[test]
fn test_gzip_invalid_body() {
#[tokio::test]
async fn test_gzip_invalid_body() {
let server = server! {
request: b"\
GET /gzip HTTP/1.1\r\n\
@@ -99,17 +99,16 @@ fn test_gzip_invalid_body() {
\r\n\
0"
};
let mut res = reqwest::blocking::get(&format!("http://{}/gzip", server.addr())).unwrap();
let url = format!("http://{}/gzip", server.addr());
let res = reqwest::get(&url).await.unwrap();
// this tests that the request.send() didn't error, but that the error
// is in reading the body
let mut body = std::string::String::new();
res.read_to_string(&mut body).unwrap_err();
res.text().await.unwrap_err();
}
#[test]
fn test_accept_header_is_not_changed_if_set() {
#[tokio::test]
async fn test_accept_header_is_not_changed_if_set() {
let server = server! {
request: b"\
GET /accept HTTP/1.1\r\n\
@@ -126,7 +125,7 @@ fn test_accept_header_is_not_changed_if_set() {
\r\n\
"
};
let client = reqwest::blocking::Client::new();
let client = reqwest::Client::new();
let res = client
.get(&format!("http://{}/accept", server.addr()))
@@ -135,13 +134,14 @@ fn test_accept_header_is_not_changed_if_set() {
reqwest::header::HeaderValue::from_static("application/json"),
)
.send()
.await
.unwrap();
assert_eq!(res.status(), reqwest::StatusCode::OK);
}
#[test]
fn test_accept_encoding_header_is_not_changed_if_set() {
#[tokio::test]
async fn test_accept_encoding_header_is_not_changed_if_set() {
let server = server! {
request: b"\
GET /accept-encoding HTTP/1.1\r\n\
@@ -158,7 +158,7 @@ fn test_accept_encoding_header_is_not_changed_if_set() {
\r\n\
"
};
let client = reqwest::blocking::Client::new();
let client = reqwest::Client::new();
let res = client
.get(&format!("http://{}/accept-encoding", server.addr()))
@@ -167,6 +167,7 @@ fn test_accept_encoding_header_is_not_changed_if_set() {
reqwest::header::HeaderValue::from_static("identity"),
)
.send()
.await
.unwrap();
assert_eq!(res.status(), reqwest::StatusCode::OK);

View File

@@ -1,11 +1,11 @@
#[macro_use]
mod support;
#[test]
fn text_part() {
#[tokio::test]
async fn text_part() {
let _ = env_logger::try_init();
let form = reqwest::blocking::multipart::Form::new().text("foo", "bar");
let form = reqwest::multipart::Form::new().text("foo", "bar");
let expected_body = format!(
"\
@@ -39,16 +39,18 @@ fn text_part() {
let url = format!("http://{}/multipart/1", server.addr());
let res = reqwest::blocking::Client::new()
let res = reqwest::Client::new()
.post(&url)
.multipart(form)
.send()
.await
.unwrap();
assert_eq!(res.url().as_str(), &url);
assert_eq!(res.status(), reqwest::StatusCode::OK);
}
#[cfg(feature = "blocking")]
#[test]
fn file() {
let _ = env_logger::try_init();

View File

@@ -165,6 +165,7 @@ async fn test_redirect_307_and_308_tries_to_post_again() {
}
}
#[cfg(feature = "blocking")]
#[test]
fn test_redirect_307_does_not_try_if_reader_cannot_reset() {
let client = reqwest::blocking::Client::new();

View File

@@ -5,6 +5,7 @@ use std::time::Duration;
/// Tests that internal client future cancels when the oneshot channel
/// is canceled.
#[cfg(feature = "blocking")]
#[test]
fn timeout_closes_connection() {
let _ = env_logger::try_init();
@@ -42,6 +43,7 @@ fn timeout_closes_connection() {
assert_eq!(err.url().map(|u| u.as_str()), Some(url.as_str()));
}
#[cfg(feature = "blocking")]
#[test]
fn write_timeout_large_body() {
let _ = env_logger::try_init();
@@ -88,8 +90,8 @@ fn write_timeout_large_body() {
assert_eq!(err.url().map(|u| u.as_str()), Some(url.as_str()));
}
#[test]
fn test_response_timeout() {
#[tokio::test]
async fn test_response_timeout() {
let _ = env_logger::try_init();
let server = server! {
request: b"\
@@ -108,20 +110,21 @@ fn test_response_timeout() {
};
let url = format!("http://{}/response-timeout", server.addr());
let err = reqwest::blocking::Client::builder()
let err = reqwest::Client::builder()
.timeout(Duration::from_millis(500))
.build()
.unwrap()
.get(&url)
.send()
.await
.unwrap_err();
assert!(err.is_timeout());
assert_eq!(err.url().map(|u| u.as_str()), Some(url.as_str()));
}
#[test]
fn test_read_timeout() {
#[tokio::test]
async fn test_read_timeout() {
let _ = env_logger::try_init();
let server = server! {
request: b"\
@@ -142,12 +145,13 @@ fn test_read_timeout() {
};
let url = format!("http://{}/read-timeout", server.addr());
let res = reqwest::blocking::Client::builder()
let res = reqwest::Client::builder()
.timeout(Duration::from_millis(500))
.build()
.unwrap()
.get(&url)
.send()
.await
.unwrap();
assert_eq!(res.url().as_str(), &url);
@@ -157,6 +161,6 @@ fn test_read_timeout() {
&"5"
);
let err = res.text().unwrap_err();
let err = res.text().await.unwrap_err();
assert!(err.is_timeout());
}