mirror of
https://github.com/nushell/nushell.git
synced 2025-06-30 06:30:08 +02:00
Port command (#5849)
* implement port command * better comment * fmt code * fix example description * fix usage * fix tests
This commit is contained in:
@ -36,6 +36,7 @@ mod math;
|
||||
mod merge;
|
||||
mod mkdir;
|
||||
mod move_;
|
||||
mod network;
|
||||
mod open;
|
||||
mod parse;
|
||||
mod path;
|
||||
|
1
crates/nu-command/tests/commands/network/mod.rs
Normal file
1
crates/nu-command/tests/commands/network/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
mod port;
|
52
crates/nu-command/tests/commands/network/port.rs
Normal file
52
crates/nu-command/tests/commands/network/port.rs
Normal file
@ -0,0 +1,52 @@
|
||||
use nu_test_support::{nu, pipeline};
|
||||
use std::net::TcpListener;
|
||||
use std::sync::mpsc;
|
||||
|
||||
#[test]
|
||||
fn port_with_invalid_range() {
|
||||
let actual = nu!(
|
||||
cwd: ".", pipeline(
|
||||
r#"
|
||||
port 4000 3999
|
||||
"#
|
||||
));
|
||||
|
||||
assert!(actual.err.contains("Invalid range"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn port_with_already_usage() {
|
||||
let (tx, rx) = mpsc::sync_channel(0);
|
||||
|
||||
// let system pick a free port for us.
|
||||
let free_port = {
|
||||
let listener = TcpListener::bind("127.0.0.1:0").expect("failed to pick a port");
|
||||
listener.local_addr().unwrap().port()
|
||||
};
|
||||
let handler = std::thread::spawn(move || {
|
||||
let _listener = TcpListener::bind(format!("127.0.0.1:{free_port}"));
|
||||
let _ = rx.recv();
|
||||
});
|
||||
let actual = nu!(
|
||||
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.
|
||||
assert!(actual.err.contains("AddrInUse"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn port_from_system_given() {
|
||||
let actual = nu!(
|
||||
cwd: ".", pipeline(
|
||||
r#"
|
||||
port
|
||||
"#
|
||||
));
|
||||
|
||||
// check that we can get an integer port from system.
|
||||
assert!(actual.out.parse::<u16>().unwrap() > 0)
|
||||
}
|
Reference in New Issue
Block a user