mirror of
https://github.com/nushell/nushell.git
synced 2024-11-26 10:23:52 +01:00
try make port test more reliable (#6117)
This commit is contained in:
parent
5a5c65ee4b
commit
894d3e7452
@ -16,26 +16,35 @@ fn port_with_invalid_range() {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn port_with_already_usage() {
|
fn port_with_already_usage() {
|
||||||
let (tx, rx) = mpsc::sync_channel(0);
|
let retry_times = 10;
|
||||||
|
for _ in 0..retry_times {
|
||||||
|
let (tx, rx) = mpsc::sync_channel(0);
|
||||||
|
|
||||||
// let system pick a free port for us.
|
// let system pick a free port for us.
|
||||||
let free_port = {
|
let free_port = {
|
||||||
let listener = TcpListener::bind("127.0.0.1:0").expect("failed to pick a port");
|
let listener = TcpListener::bind("127.0.0.1:0").expect("failed to pick a port");
|
||||||
listener.local_addr().unwrap().port()
|
listener.local_addr().unwrap().port()
|
||||||
};
|
};
|
||||||
let handler = std::thread::spawn(move || {
|
let handler = std::thread::spawn(move || {
|
||||||
let _listener = TcpListener::bind(format!("127.0.0.1:{free_port}"));
|
let _listener = TcpListener::bind(format!("127.0.0.1:{free_port}"));
|
||||||
let _ = rx.recv();
|
let _ = rx.recv();
|
||||||
});
|
});
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
cwd: ".", pipeline(&format!("port {free_port} {free_port}"))
|
cwd: ".", pipeline(&format!("port {free_port} {free_port}"))
|
||||||
|
);
|
||||||
|
let _ = tx.send(true);
|
||||||
|
// make sure that the thread is closed and we release the port.
|
||||||
|
handler.join().unwrap();
|
||||||
|
|
||||||
|
// check for error kind str.
|
||||||
|
if actual.err.contains("AddrInUse") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert!(
|
||||||
|
false,
|
||||||
|
"already check port report AddrInUse for seveval times, but still failed."
|
||||||
);
|
);
|
||||||
let _ = tx.send(true);
|
|
||||||
// make sure that the thread is closed and we release the port.
|
|
||||||
handler.join().unwrap();
|
|
||||||
|
|
||||||
// check for error kind str.
|
|
||||||
assert!(actual.err.contains("AddrInUse"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
Reference in New Issue
Block a user