From 270c85bf942d02bd0113009f47968b41d5563504 Mon Sep 17 00:00:00 2001 From: Jeb Rosen Date: Tue, 10 Sep 2019 19:16:48 -0700 Subject: [PATCH] Fix a minor compilation error, possibly caused by rust-lang/rust#64292. --- core/codegen/tests/route-ranking.rs | 9 ++++--- core/codegen/tests/route.rs | 18 +++++++------- core/lib/src/data/data.rs | 3 ++- core/lib/src/local/request.rs | 3 ++- .../lib/tests/form_value_decoding-issue-82.rs | 6 ++--- core/lib/tests/segments-issues-41-86.rs | 3 ++- core/lib/tests/strict_and_lenient_forms.rs | 24 +++++++++---------- .../tests/uri-percent-encoding-issue-808.rs | 3 ++- examples/errors/src/tests.rs | 6 +++-- examples/hello_person/src/tests.rs | 8 ++++--- examples/manual_routes/src/main.rs | 6 +++-- examples/manual_routes/src/tests.rs | 3 ++- examples/pastebin/src/tests.rs | 3 ++- examples/query_params/src/tests.rs | 3 ++- examples/ranking/src/tests.rs | 17 +++++++------ examples/session/src/tests.rs | 6 ++--- examples/todo/src/tests.rs | 15 +++++++----- 17 files changed, 80 insertions(+), 56 deletions(-) diff --git a/core/codegen/tests/route-ranking.rs b/core/codegen/tests/route-ranking.rs index 40aaec3368..e6952d4425 100644 --- a/core/codegen/tests/route-ranking.rs +++ b/core/codegen/tests/route-ranking.rs @@ -26,13 +26,16 @@ async fn test_ranking() { let mut response = client.get("/0").dispatch().await; assert_eq!(response.body_string().await.unwrap(), "0"); - let mut response = client.get(format!("/{}", 1 << 8)).dispatch().await; + let request = client.get(format!("/{}", 1 << 8)); + let mut response = request.dispatch().await; assert_eq!(response.body_string().await.unwrap(), "1"); - let mut response = client.get(format!("/{}", 1 << 16)).dispatch().await; + let request = client.get(format!("/{}", 1 << 16)); + let mut response = request.dispatch().await; assert_eq!(response.body_string().await.unwrap(), "2"); - let mut response = client.get(format!("/{}", 1u64 << 32)).dispatch().await; + let request = client.get(format!("/{}", 1u64 << 32)); + let mut response = request.dispatch().await; assert_eq!(response.body_string().await.unwrap(), "3"); } diff --git a/core/codegen/tests/route.rs b/core/codegen/tests/route.rs index 1c3913455f..89c53d1222 100644 --- a/core/codegen/tests/route.rs +++ b/core/codegen/tests/route.rs @@ -103,26 +103,28 @@ async fn test_full_route() { let response = client.post(&uri).body(simple).dispatch().await; assert_eq!(response.status(), Status::NotFound); - let response = client.post(format!("/1{}", uri)).body(simple).dispatch().await; + let request = client.post(format!("/1{}", uri)).body(simple); + let response = request.dispatch().await; assert_eq!(response.status(), Status::NotFound); - let mut response = client + let request = client .post(format!("/1{}", uri)) .header(ContentType::JSON) - .body(simple) - .dispatch().await; + .body(simple); + let mut response = request.dispatch().await; assert_eq!(response.body_string().await.unwrap(), format!("({}, {}, {}, {}, {}, {}) ({})", sky, name, "A A", "inside", path, simple, expected_uri)); - let response = client.post(format!("/2{}", uri)).body(simple).dispatch().await; + let request = client.post(format!("/2{}", uri)).body(simple); + let response = request.dispatch().await; assert_eq!(response.status(), Status::NotFound); - let mut response = client + let request = client .post(format!("/2{}", uri)) .header(ContentType::JSON) - .body(simple) - .dispatch().await; + .body(simple); + let mut response = request.dispatch().await; assert_eq!(response.body_string().await.unwrap(), format!("({}, {}, {}, {}, {}, {}) ({})", sky, name, "A A", "inside", path, simple, expected_uri)); diff --git a/core/lib/src/data/data.rs b/core/lib/src/data/data.rs index 49ce1079e7..db11991db9 100644 --- a/core/lib/src/data/data.rs +++ b/core/lib/src/data/data.rs @@ -171,7 +171,8 @@ impl Data { pub fn stream_to_file + Send + Unpin + 'static>(self, path: P) -> impl Future> { Box::pin(async move { let mut file = async_std::fs::File::create(path).await?; - self.stream_to(&mut file).await + let streaming = self.stream_to(&mut file); + streaming.await }) } diff --git a/core/lib/src/local/request.rs b/core/lib/src/local/request.rs index b4aaffca0f..6a262c7889 100644 --- a/core/lib/src/local/request.rs +++ b/core/lib/src/local/request.rs @@ -348,7 +348,8 @@ impl<'c> LocalRequest<'c> { #[inline(always)] pub async fn dispatch(mut self) -> LocalResponse<'c> { let r = self.long_lived_request(); - LocalRequest::_dispatch(self.client, r, self.request, &self.uri, self.data).await + let dispatching = LocalRequest::_dispatch(self.client, r, self.request, &self.uri, self.data); + dispatching.await } /// Dispatches the request, returning the response. diff --git a/core/lib/tests/form_value_decoding-issue-82.rs b/core/lib/tests/form_value_decoding-issue-82.rs index b9305109db..265ca7f149 100644 --- a/core/lib/tests/form_value_decoding-issue-82.rs +++ b/core/lib/tests/form_value_decoding-issue-82.rs @@ -22,10 +22,10 @@ mod tests { async fn check_decoding(raw: &str, decoded: &str) { let client = Client::new(rocket::ignite().mount("/", routes![bug])).unwrap(); - let mut response = client.post("/") + let request = client.post("/") .header(ContentType::Form) - .body(format!("form_data={}", raw)) - .dispatch().await; + .body(format!("form_data={}", raw)); + let mut response = request.dispatch().await; assert_eq!(response.status(), Status::Ok); assert_eq!(Some(decoded.to_string()), response.body_string().await); diff --git a/core/lib/tests/segments-issues-41-86.rs b/core/lib/tests/segments-issues-41-86.rs index dac00ef33c..c9bbbbce83 100644 --- a/core/lib/tests/segments-issues-41-86.rs +++ b/core/lib/tests/segments-issues-41-86.rs @@ -47,7 +47,8 @@ mod tests { "/static", "/point/static"] { let path = "this/is/the/path/we/want"; - let mut response = client.get(format!("{}/{}", prefix, path)).dispatch().await; + let request = client.get(format!("{}/{}", prefix, path)); + let mut response = request.dispatch().await; assert_eq!(response.body_string().await, Some(path.into())); } } diff --git a/core/lib/tests/strict_and_lenient_forms.rs b/core/lib/tests/strict_and_lenient_forms.rs index e027fa83d3..dbc0a1554f 100644 --- a/core/lib/tests/strict_and_lenient_forms.rs +++ b/core/lib/tests/strict_and_lenient_forms.rs @@ -34,18 +34,18 @@ mod strict_and_lenient_forms_tests { #[rocket::async_test] async fn test_strict_form() { let client = client(); - let mut response = client.post("/strict") + let request = client.post("/strict") .header(ContentType::Form) - .body(format!("field={}", FIELD_VALUE)) - .dispatch().await; + .body(format!("field={}", FIELD_VALUE)); + let mut response = request.dispatch().await; assert_eq!(response.status(), Status::Ok); assert_eq!(response.body_string().await, Some(FIELD_VALUE.into())); - let response = client.post("/strict") + let request = client.post("/strict") .header(ContentType::Form) - .body(format!("field={}&extra=whoops", FIELD_VALUE)) - .dispatch().await; + .body(format!("field={}&extra=whoops", FIELD_VALUE)); + let response = request.dispatch().await; assert_eq!(response.status(), Status::UnprocessableEntity); } @@ -53,18 +53,18 @@ mod strict_and_lenient_forms_tests { #[rocket::async_test] async fn test_lenient_form() { let client = client(); - let mut response = client.post("/lenient") + let request = client.post("/lenient") .header(ContentType::Form) - .body(format!("field={}", FIELD_VALUE)) - .dispatch().await; + .body(format!("field={}", FIELD_VALUE)); + let mut response = request.dispatch().await; assert_eq!(response.status(), Status::Ok); assert_eq!(response.body_string().await, Some(FIELD_VALUE.into())); - let mut response = client.post("/lenient") + let request = client.post("/lenient") .header(ContentType::Form) - .body(format!("field={}&extra=whoops", FIELD_VALUE)) - .dispatch().await; + .body(format!("field={}&extra=whoops", FIELD_VALUE)); + let mut response = request.dispatch().await; assert_eq!(response.status(), Status::Ok); assert_eq!(response.body_string().await, Some(FIELD_VALUE.into())); diff --git a/core/lib/tests/uri-percent-encoding-issue-808.rs b/core/lib/tests/uri-percent-encoding-issue-808.rs index e1f4586a97..076b544f00 100644 --- a/core/lib/tests/uri-percent-encoding-issue-808.rs +++ b/core/lib/tests/uri-percent-encoding-issue-808.rs @@ -52,7 +52,8 @@ mod tests { async fn uri_percent_encoding_get() { let client = Client::new(rocket()).unwrap(); let name = Uri::percent_encode(NAME); - let mut response = client.get(format!("/hello/{}", name)).dispatch().await; + let request = client.get(format!("/hello/{}", name)); + let mut response = request.dispatch().await; assert_eq!(response.status(), Status::Ok); assert_eq!(response.body_string().await.unwrap(), format!("Hello, {}!", NAME)); } diff --git a/examples/errors/src/tests.rs b/examples/errors/src/tests.rs index b30ca28dd1..bfe1aa7fd2 100644 --- a/examples/errors/src/tests.rs +++ b/examples/errors/src/tests.rs @@ -7,7 +7,8 @@ async fn test(uri: &str, status: Status, body: String) { .register(catchers![super::not_found]); let client = Client::new(rocket).unwrap(); - let mut response = client.get(uri).dispatch().await; + let request = client.get(uri); + let mut response = request.dispatch().await; assert_eq!(response.status(), status); assert_eq!(response.body_string().await, Some(body)); } @@ -16,7 +17,8 @@ async fn test(uri: &str, status: Status, body: String) { async fn test_hello() { let (name, age) = ("Arthur", 42); let uri = format!("/hello/{}/{}", name, age); - test(&uri, Status::Ok, format!("Hello, {} year old named {}!", age, name)).await; + let expected = format!("Hello, {} year old named {}!", age, name); + test(&uri, Status::Ok, expected).await; } #[rocket::async_test] diff --git a/examples/hello_person/src/tests.rs b/examples/hello_person/src/tests.rs index 02a32ffab6..0438626cbc 100644 --- a/examples/hello_person/src/tests.rs +++ b/examples/hello_person/src/tests.rs @@ -18,8 +18,9 @@ async fn test_404(uri: &'static str) { #[rocket::async_test] async fn test_hello() { for &(name, age) in &[("Mike", 22), ("Michael", 80), ("A", 0), ("a", 127)] { - test(format!("/hello/{}/{}", name, age), - format!("Hello, {} year old named {}!", age, name)).await; + let uri = format!("/hello/{}/{}", name, age); + let expected = format!("Hello, {} year old named {}!", age, name); + test(uri, expected).await; } } @@ -33,6 +34,7 @@ async fn test_failing_hello() { #[rocket::async_test] async fn test_hi() { for name in &["Mike", "A", "123", "hi", "c"] { - test(format!("/hello/{}", name), name.to_string()).await; + let uri = format!("/hello/{}", name); + test(uri, name.to_string()).await; } } diff --git a/examples/manual_routes/src/main.rs b/examples/manual_routes/src/main.rs index c501159952..d2443668b0 100644 --- a/examples/manual_routes/src/main.rs +++ b/examples/manual_routes/src/main.rs @@ -51,7 +51,8 @@ fn upload<'r>(req: &'r Request, data: Data) -> HandlerFuture<'r> { let file = File::create(env::temp_dir().join("upload.txt")).await; if let Ok(file) = file { if let Ok(n) = data.stream_to(file).await { - return Outcome::from(req, format!("OK: {} bytes uploaded.", n)).await; + let response = format!("OK: {} bytes uploaded.", n); + return Outcome::from(req, response).await; } println!(" => Failed copying."); @@ -92,7 +93,8 @@ impl Handler for CustomHandler { .or_forward(data); let id = try_outcome!(id_outcome); - Outcome::from(req, format!("{} - {}", self_data, id)).await + let response = format!("{} - {}", self_data, id); + Outcome::from(req, response).await }) } } diff --git a/examples/manual_routes/src/tests.rs b/examples/manual_routes/src/tests.rs index 77af31a818..548146d1bc 100644 --- a/examples/manual_routes/src/tests.rs +++ b/examples/manual_routes/src/tests.rs @@ -5,7 +5,8 @@ use rocket::http::{ContentType, Status}; fn test(uri: &str, content_type: ContentType, status: Status, body: String) { rocket::async_test(async move { let client = Client::new(rocket()).unwrap(); - let mut response = client.get(uri).header(content_type).dispatch().await; + let request = client.get(uri).header(content_type); + let mut response = request.dispatch().await; assert_eq!(response.status(), status); assert_eq!(response.body_string().await, Some(body)); }) diff --git a/examples/pastebin/src/tests.rs b/examples/pastebin/src/tests.rs index a51025f5f3..675faa40aa 100644 --- a/examples/pastebin/src/tests.rs +++ b/examples/pastebin/src/tests.rs @@ -25,7 +25,8 @@ async fn upload_paste(client: &Client, body: &str) -> String { } async fn download_paste(client: &Client, id: &str) -> String { - let mut response = client.get(format!("/{}", id)).dispatch().await; + let request = client.get(format!("/{}", id)); + let mut response = request.dispatch().await; assert_eq!(response.status(), Status::Ok); response.body_string().await.unwrap() } diff --git a/examples/query_params/src/tests.rs b/examples/query_params/src/tests.rs index f09643729c..b3ed9abbe1 100644 --- a/examples/query_params/src/tests.rs +++ b/examples/query_params/src/tests.rs @@ -5,8 +5,9 @@ use rocket::http::Status; macro_rules! run_test { ($query:expr, |$response:ident| $body:expr) => ({ let client = Client::new(rocket()).unwrap(); + let request = client.get(format!("/hello{}", $query)); #[allow(unused_mut)] - let mut $response = client.get(format!("/hello{}", $query)).dispatch().await; + let mut $response = request.dispatch().await; $body }) } diff --git a/examples/ranking/src/tests.rs b/examples/ranking/src/tests.rs index 79f18d08cd..b9605ddefe 100644 --- a/examples/ranking/src/tests.rs +++ b/examples/ranking/src/tests.rs @@ -3,15 +3,16 @@ use rocket::local::Client; async fn test(uri: String, expected: String) { let rocket = rocket::ignite().mount("/", routes![super::hello, super::hi]); let client = Client::new(rocket).unwrap(); - let mut response = client.get(&uri).dispatch().await; + let mut response = client.get(uri).dispatch().await; assert_eq!(response.body_string().await, Some(expected)); } #[rocket::async_test] async fn test_hello() { for &(name, age) in &[("Mike", 22), ("Michael", 80), ("A", 0), ("a", 127)] { - test(format!("/hello/{}/{}", name, age), - format!("Hello, {} year old named {}!", age, name)).await; + let uri = format!("/hello/{}/{}", name, age); + let expected = format!("Hello, {} year old named {}!", age, name); + test(uri, expected).await; } } @@ -19,13 +20,15 @@ async fn test_hello() { async fn test_failing_hello_hi() { // Invalid integers. for &(name, age) in &[("Mike", 1000), ("Michael", 128), ("A", -800), ("a", -200)] { - test(format!("/hello/{}/{}", name, age), - format!("Hi {}! Your age ({}) is kind of funky.", name, age)).await; + let uri = format!("/hello/{}/{}", name, age); + let expected = format!("Hi {}! Your age ({}) is kind of funky.", name, age); + test(uri, expected).await; } // Non-integers. for &(name, age) in &[("Mike", "!"), ("Michael", "hi"), ("A", "blah"), ("a", "0-1")] { - test(format!("/hello/{}/{}", name, age), - format!("Hi {}! Your age ({}) is kind of funky.", name, age)).await; + let uri = format!("/hello/{}/{}", name, age); + let expected = format!("Hi {}! Your age ({}) is kind of funky.", name, age); + test(uri, expected).await; } } diff --git a/examples/session/src/tests.rs b/examples/session/src/tests.rs index 12a2d69b63..d32430a74f 100644 --- a/examples/session/src/tests.rs +++ b/examples/session/src/tests.rs @@ -14,10 +14,10 @@ fn user_id_cookie(response: &Response<'_>) -> Option> { } async fn login(client: &Client, user: &str, pass: &str) -> Option> { - let response = client.post("/login") + let request = client.post("/login") .header(ContentType::Form) - .body(format!("username={}&password={}", user, pass)) - .dispatch().await; + .body(format!("username={}&password={}", user, pass)); + let response = request.dispatch().await; user_id_cookie(&response) } diff --git a/examples/todo/src/tests.rs b/examples/todo/src/tests.rs index f05a4ef4fd..6325e2b4b6 100644 --- a/examples/todo/src/tests.rs +++ b/examples/todo/src/tests.rs @@ -49,7 +49,8 @@ fn test_insertion_deletion() { // Issue a request to delete the task. let id = new_tasks[0].id.unwrap(); - client.delete(format!("/todo/{}", id)).dispatch().await; + let request = client.delete(format!("/todo/{}", id)); + request.dispatch().await; // Ensure it's gone. let final_tasks = Task::all(&conn); @@ -73,11 +74,13 @@ fn test_toggle() { assert_eq!(task.completed, false); // Issue a request to toggle the task; ensure it is completed. - client.put(format!("/todo/{}", task.id.unwrap())).dispatch().await; + let request = client.put(format!("/todo/{}", task.id.unwrap())); + request.dispatch().await; assert_eq!(Task::all(&conn)[0].completed, true); // Issue a request to toggle the task; ensure it's not completed again. - client.put(format!("/todo/{}", task.id.unwrap())).dispatch().await; + let request = client.put(format!("/todo/{}", task.id.unwrap())); + request.dispatch().await; assert_eq!(Task::all(&conn)[0].completed, false); }) } @@ -94,10 +97,10 @@ fn test_many_insertions() { for i in 0..ITER { // Issue a request to insert a new task with a random description. let desc: String = thread_rng().sample_iter(&Alphanumeric).take(12).collect(); - client.post("/todo") + let request = client.post("/todo") .header(ContentType::Form) - .body(format!("description={}", desc)) - .dispatch().await; + .body(format!("description={}", desc)); + request.dispatch().await; // Record the description we choose for this iteration. descs.insert(0, desc);