mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix: serve handler error with 0 arguments (#23652)
Fixes https://github.com/denoland/deno/issues/23651 Co-authored-by: Satya Rohith <me@satyarohith.com>
This commit is contained in:
parent
20cb0e8863
commit
812f2e4c22
4 changed files with 52 additions and 4 deletions
|
@ -793,9 +793,9 @@ internals.serveHttpOnConnection = serveHttpOnConnection;
|
|||
|
||||
function registerDeclarativeServer(exports) {
|
||||
if (ObjectHasOwn(exports, "fetch")) {
|
||||
if (typeof exports.fetch !== "function" || exports.fetch.length !== 1) {
|
||||
if (typeof exports.fetch !== "function") {
|
||||
throw new TypeError(
|
||||
"Invalid type for fetch: must be a function with a single parameter",
|
||||
"Invalid type for fetch: must be a function with a single or no parameter",
|
||||
);
|
||||
}
|
||||
return ({ servePort, serveHost }) => {
|
||||
|
|
|
@ -14,12 +14,12 @@ async fn deno_serve_port_0() {
|
|||
.arg("serve")
|
||||
.arg("--port")
|
||||
.arg("0")
|
||||
.arg("./serve.ts")
|
||||
.arg("./serve/port_0.ts")
|
||||
.stdout_piped()
|
||||
.spawn()
|
||||
.unwrap();
|
||||
let stdout = child.stdout.as_mut().unwrap();
|
||||
let mut buffer = [0; 50];
|
||||
let mut buffer = [0; 52];
|
||||
let _read = stdout.read(&mut buffer).unwrap();
|
||||
let msg = std::str::from_utf8(&buffer).unwrap();
|
||||
let port_regex = Regex::new(r"(\d+)").unwrap();
|
||||
|
@ -49,3 +49,46 @@ async fn deno_serve_port_0() {
|
|||
child.kill().unwrap();
|
||||
child.wait().unwrap();
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn deno_serve_no_args() {
|
||||
let mut child = util::deno_cmd()
|
||||
.current_dir(util::testdata_path())
|
||||
.arg("serve")
|
||||
.arg("--port")
|
||||
.arg("0")
|
||||
.arg("./serve/no_args.ts")
|
||||
.stdout_piped()
|
||||
.spawn()
|
||||
.unwrap();
|
||||
let stdout = child.stdout.as_mut().unwrap();
|
||||
let mut buffer = [0; 52];
|
||||
let _read = stdout.read(&mut buffer).unwrap();
|
||||
let msg = std::str::from_utf8(&buffer).unwrap();
|
||||
let port_regex = Regex::new(r"(\d+)").unwrap();
|
||||
let port = port_regex.find(msg).unwrap().as_str();
|
||||
|
||||
let cert = reqwest::Certificate::from_pem(include_bytes!(
|
||||
"../testdata/tls/RootCA.crt"
|
||||
))
|
||||
.unwrap();
|
||||
|
||||
let client = reqwest::Client::builder()
|
||||
.add_root_certificate(cert)
|
||||
.http2_prior_knowledge()
|
||||
.build()
|
||||
.unwrap();
|
||||
|
||||
let res = client
|
||||
.get(&format!("http://127.0.0.1:{port}"))
|
||||
.send()
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(200, res.status());
|
||||
|
||||
let body = res.text().await.unwrap();
|
||||
assert_eq!(body, "deno serve with no args in fetch() works!");
|
||||
|
||||
child.kill().unwrap();
|
||||
child.wait().unwrap();
|
||||
}
|
||||
|
|
5
tests/testdata/serve/no_args.ts
vendored
Normal file
5
tests/testdata/serve/no_args.ts
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
export default {
|
||||
fetch() {
|
||||
return new Response("deno serve with no args in fetch() works!");
|
||||
},
|
||||
};
|
Loading…
Reference in a new issue