Skip to content

Commit a6ebc43

Browse files
committed
Require moved-resource diagnostic in HTTP ownership regression
1 parent 94faccc commit a6ebc43

1 file changed

Lines changed: 23 additions & 5 deletions

File tree

‎tests/http_api_migration_tests.rs‎

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,14 @@ fn production_and_embedded_http_sources_have_no_map_transport() {
7474
);
7575
}
7676

77-
fn assert_rejected(source: &str) {
77+
fn assert_rejected(source: &str) -> String {
7878
match AgentRunner::from_source(source, AgentConfig::default()) {
7979
Ok(_) => panic!("invalid resource call compiled: {source}"),
80-
Err(error) => assert!(!error.to_string().is_empty(), "empty compile diagnostic"),
80+
Err(error) => {
81+
let diagnostic = error.to_string();
82+
assert!(!diagnostic.is_empty(), "empty compile diagnostic");
83+
diagnostic
84+
}
8185
}
8286
}
8387

@@ -192,15 +196,29 @@ fn wrong_resource_key_fails_at_compile_time() {
192196
#[test]
193197
fn request_cannot_be_used_after_send() {
194198
assert_resource_api_available();
195-
assert_rejected(
199+
AgentRunner::from_source(
196200
r#"use http;
197201
pub fn run(input: map) -> int {
198-
let request = http::request::new("GET", "https://example.com/");
202+
let mut request = http::request::new("GET", "https://example.com/");
203+
http::request::set_header(&mut request, "x-test", "late");
204+
0;
205+
}"#,
206+
AgentConfig::default(),
207+
)
208+
.expect("the same mutable borrow must compile before the request is sent");
209+
let diagnostic = assert_rejected(
210+
r#"use http;
211+
pub fn run(input: map) -> int {
212+
let mut request = http::request::new("GET", "https://example.com/");
199213
let response = http::client::request(request);
200-
http::request::set_header(&request, "x-test", "late");
214+
http::request::set_header(&mut request, "x-test", "late");
201215
0;
202216
}"#,
203217
);
218+
assert!(
219+
diagnostic.contains("local 'request' was moved earlier"),
220+
"expected ownership diagnostic, got {diagnostic}"
221+
);
204222
}
205223

206224
#[test]

0 commit comments

Comments
 (0)