Skip to content

Commit 5d9b525

Browse files
committed
chore: Fix integration tests, fix HTTP server in node, fix clippy
1 parent 0a94062 commit 5d9b525

28 files changed

+557
-936
lines changed

crates/base/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ mod supabase_startup_snapshot {
147147

148148
fn check_read_with_api_name(
149149
&self,
150-
path: &Path,
151-
api_name: Option<&str>,
150+
_path: &Path,
151+
_api_name: Option<&str>,
152152
) -> Result<(), AnyError> {
153153
unreachable!("snapshotting!")
154154
}

crates/base/src/deno_runtime.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -475,11 +475,10 @@ impl DenoRuntime {
475475
{
476476
Err(err) => Err(anyhow!("event loop error: {}", err)),
477477
Ok(_) => match mod_result_rx.await {
478-
Err(_) => Err(anyhow!("mod result sender dropped")),
479-
// Ok(Err(err)) => {
480-
// error!("{}", err.to_string());
481-
// Err(err)
482-
// }
478+
Err(e) => {
479+
error!("{}", e.to_string());
480+
Err(e)
481+
}
483482
Ok(_) => Ok(()),
484483
},
485484
};

crates/base/src/macros/test_macros.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#[macro_export]
22
macro_rules! integration_test {
3-
($main_file:expr, $port:expr, $url:expr, ($($function:tt)+) $(, $termination_token: expr)?) => {
3+
($main_file:expr, $port:expr, $url:expr, $shot_policy:expr, $import_map:expr, $req_builder:expr, ($($function:tt)+) $(, $termination_token: expr)?) => {
44
let (tx, mut rx) = tokio::sync::mpsc::channel::<base::server::ServerHealth>(1);
55

66
let signal = tokio::spawn(async move {
77
while let Some(base::server::ServerHealth::Listening(event_rx)) = rx.recv().await {
8-
integration_test!(@req event_rx, $port, $url, ($($function)+));
8+
integration_test!(@req event_rx, $port, $url, $req_builder, ($($function)+));
99
}
1010
None
1111
});
@@ -24,8 +24,8 @@ macro_rules! integration_test {
2424
$port,
2525
String::from($main_file),
2626
None,
27-
None,
28-
None,
27+
$shot_policy,
28+
$import_map,
2929
false,
3030
Some(tx.clone()),
3131
$crate::server::WorkerEntrypoints {
@@ -47,13 +47,17 @@ macro_rules! integration_test {
4747
None
4848
};
4949

50-
(@req $event_rx:ident, $port:expr, $url:expr, ($req:expr, $_:expr)) => {
51-
return $req($port, $url, $event_rx).await;
50+
(@req $event_rx:ident, $port:expr, $url:expr, $req_builder:expr, ($req:expr, $_:expr)) => {
51+
return $req($port, $url, $req_builder, $event_rx).await;
5252
};
5353

54-
(@req $_:ident, $port:expr, $url:expr, $__:expr) => {
55-
let req = reqwest::get(format!("http://localhost:{}/{}", $port, $url)).await;
56-
return Some(req);
54+
(@req $_:ident, $port:expr, $url:expr, $req_builder:expr, $__:expr) => {
55+
if let Some(req_factory) = $req_builder {
56+
return Some(req_factory.send().await);
57+
} else {
58+
let req = reqwest::get(format!("http://localhost:{}/{}", $port, $url)).await;
59+
return Some(req);
60+
}
5761
};
5862

5963
(@resp $var:ident, ($_:expr, $resp:expr)) => {

crates/base/tests/custom_readable_response_tests.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ async fn test_custom_readable_stream_response() {
88
"./test_cases/main",
99
8999,
1010
"readable-stream-resp",
11+
None,
12+
None,
13+
None::<reqwest::RequestBuilder>,
1114
(|resp: Result<reqwest::Response, reqwest::Error>| async {
1215
assert_eq!(
1316
resp.unwrap().text().await.unwrap(),
Lines changed: 31 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,29 @@
11
#[path = "../src/utils/integration_test_helper.rs"]
22
mod integration_test_helper;
33

4-
use hyper::{Body, Request, Response};
4+
use base::integration_test;
55
use serial_test::serial;
6-
use std::collections::HashMap;
76
use std::path::Path;
8-
use tokio::sync::oneshot;
97
use urlencoding::encode;
108

11-
use sb_workers::context::{WorkerContextInitOpts, WorkerRequestMsg, WorkerRuntimeOpts};
12-
13-
use crate::integration_test_helper::{create_test_user_worker, test_user_runtime_opts};
14-
159
#[tokio::test]
1610
#[serial]
1711
async fn test_import_map_file_path() {
18-
let opts = WorkerContextInitOpts {
19-
service_path: "./test_cases/with_import_map".into(),
20-
no_module_cache: false,
21-
import_map_path: Some("./test_cases/with_import_map/import_map.json".to_string()),
22-
env_vars: HashMap::new(),
23-
events_rx: None,
24-
timing: None,
25-
maybe_eszip: None,
26-
maybe_entrypoint: None,
27-
maybe_module_code: None,
28-
conf: WorkerRuntimeOpts::UserWorker(test_user_runtime_opts()),
29-
};
30-
31-
let (worker_req_tx, scope) = create_test_user_worker(opts).await.unwrap();
32-
let (res_tx, res_rx) = oneshot::channel::<Result<Response<Body>, hyper::Error>>();
33-
34-
let conn_watch = scope.conn_rx();
35-
let req_guard = scope.start_request().await;
36-
let req = Request::builder()
37-
.uri("/")
38-
.method("GET")
39-
.body(Body::empty())
40-
.unwrap();
41-
42-
let msg = WorkerRequestMsg {
43-
req,
44-
res_tx,
45-
conn_watch,
46-
};
47-
48-
let _ = worker_req_tx.send(msg);
49-
50-
let res = res_rx.await.unwrap().unwrap();
51-
assert!(res.status().as_u16() == 200);
52-
53-
let body_bytes = hyper::body::to_bytes(res.into_body()).await.unwrap();
54-
55-
assert_eq!(body_bytes, r#"{"message":"ok"}"#);
56-
req_guard.await;
12+
integration_test!(
13+
"./test_cases/with_import_map",
14+
8989,
15+
"",
16+
None,
17+
Some("./test_cases/with_import_map/import_map.json".to_string()),
18+
None::<reqwest::RequestBuilder>,
19+
(|resp: Result<reqwest::Response, reqwest::Error>| async {
20+
let res = resp.unwrap();
21+
assert!(res.status().as_u16() == 200);
22+
23+
let body_bytes = res.bytes().await.unwrap();
24+
assert_eq!(body_bytes, r#"{"message":"ok"}"#);
25+
})
26+
);
5727
}
5828

5929
#[tokio::test]
@@ -76,43 +46,20 @@ async fn test_import_map_inline() {
7646
.unwrap()
7747
)
7848
);
79-
let opts = WorkerContextInitOpts {
80-
service_path: "./test_cases/with_import_map".into(),
81-
no_module_cache: false,
82-
import_map_path: Some(inline_import_map),
83-
env_vars: HashMap::new(),
84-
events_rx: None,
85-
timing: None,
86-
maybe_eszip: None,
87-
maybe_entrypoint: None,
88-
maybe_module_code: None,
89-
conf: WorkerRuntimeOpts::UserWorker(test_user_runtime_opts()),
90-
};
91-
92-
let (worker_req_tx, scope) = create_test_user_worker(opts).await.unwrap();
93-
let (res_tx, res_rx) = oneshot::channel::<Result<Response<Body>, hyper::Error>>();
94-
95-
let conn_watch = scope.conn_rx();
96-
let req_guard = scope.start_request().await;
97-
let req = Request::builder()
98-
.uri("/")
99-
.method("GET")
100-
.body(Body::empty())
101-
.unwrap();
102-
103-
let msg = WorkerRequestMsg {
104-
req,
105-
res_tx,
106-
conn_watch,
107-
};
10849

109-
let _ = worker_req_tx.send(msg);
110-
111-
let res = res_rx.await.unwrap().unwrap();
112-
assert!(res.status().as_u16() == 200);
113-
114-
let body_bytes = hyper::body::to_bytes(res.into_body()).await.unwrap();
115-
116-
assert_eq!(body_bytes, r#"{"message":"ok"}"#);
117-
req_guard.await;
50+
integration_test!(
51+
"./test_cases/with_import_map",
52+
8978,
53+
"",
54+
None,
55+
Some(inline_import_map),
56+
None::<reqwest::RequestBuilder>,
57+
(|resp: Result<reqwest::Response, reqwest::Error>| async {
58+
let res = resp.unwrap();
59+
assert!(res.status().as_u16() == 200);
60+
61+
let body_bytes = res.bytes().await.unwrap();
62+
assert_eq!(body_bytes, r#"{"message":"ok"}"#);
63+
})
64+
);
11865
}

crates/base/tests/linux_pku_sigsegv_test_cli.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#[cfg(target_os = "linux")]
12
use base::integration_test;
23

34
#[cfg(target_os = "linux")]
@@ -7,7 +8,9 @@ async fn test_not_trigger_pku_sigsegv_due_to_jit_compilation_cli() {
78
"./test_cases/main",
89
8999,
910
"slow_resp",
10-
(|resp: Result<reqwest::Response, reqwest::Error>| async {
11+
None,
12+
None,
13+
None(|resp: Result<reqwest::Response, reqwest::Error>| async {
1114
assert!(resp.unwrap().text().await.unwrap().starts_with("meow: "));
1215
})
1316
);

0 commit comments

Comments
 (0)