Skip to content

Commit

Permalink
fix(inspector): proper error message on port collision (denoland#4514)
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinkassimo committed Mar 28, 2020
1 parent ad198b1 commit 2f78422
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 1 deletion.
7 changes: 6 additions & 1 deletion cli/inspector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,12 @@ async fn server(address: SocketAddrV4, mut server_msg_rx: ServerMsgRx) {
});

let routes = websocket.or(version).or(json_list);
let web_handler = warp::serve(routes).bind(address);
let (_, web_handler) = warp::serve(routes)
.try_bind_ephemeral(address)
.unwrap_or_else(|e| {
eprintln!("Cannot start inspector server: {}", e);
std::process::exit(1);
});

future::join(msg_handler, web_handler).await;
}
Expand Down
38 changes: 38 additions & 0 deletions cli/tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2072,6 +2072,44 @@ async fn inspector_pause() {
child.kill().unwrap();
}

#[cfg(not(target_os = "linux"))] // TODO(ry) broken on github actions.
#[tokio::test]
async fn inspector_port_collision() {
let script = deno::test_util::root_path()
.join("cli")
.join("tests")
.join("inspector1.js");
let mut child1 = util::deno_cmd()
.arg("run")
.arg("--inspect=127.0.0.1:9231")
.arg(script.clone())
.stderr(std::process::Stdio::piped())
.spawn()
.unwrap();
let ws_url_1 = extract_ws_url_from_stderr(child1.stderr.as_mut().unwrap());
println!("ws_url {}", ws_url_1);

let mut child2 = util::deno_cmd()
.arg("run")
.arg("--inspect=127.0.0.1:9231")
.arg(script)
.stderr(std::process::Stdio::piped())
.spawn()
.unwrap();

use std::io::Read;
let mut stderr_str_2 = String::new();
child2
.stderr
.as_mut()
.unwrap()
.read_to_string(&mut stderr_str_2)
.unwrap();
assert!(stderr_str_2.contains("Cannot start inspector server"));
child1.kill().unwrap();
let _ = child2.kill();
}

mod util {
use deno::colors::strip_ansi_codes;
pub use deno::test_util::*;
Expand Down

0 comments on commit 2f78422

Please sign in to comment.