Skip to content

Commit

Permalink
Bubble up default environment values to main.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
JohanLorenzo committed Mar 2, 2016
1 parent 2841747 commit e4b2814
Showing 1 changed file with 65 additions and 36 deletions.
101 changes: 65 additions & 36 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,10 @@ Usage: foxbox [-v] [-h] [-n <hostname>] [-p <port>] [-w <wsport>] [-r <url>] [-i
Options:
-v, --verbose Toggle verbose output.
-n, --name <hostname> Set local hostname.
-p, --port <port> Set port to listen on for http connections.
-w, --wsport <wsport> Set port to listen on for websocket.
-r, --register <url> Change the url of the registration endpoint.
-n, --name <hostname> Set local hostname. [default: foxbox]
-p, --port <port> Set port to listen on for http connections. [default: 3000]
-w, --wsport <wsport> Set port to listen on for websocket. [default: 4000]
-r, --register <url> Change the url of the registration endpoint. [default: http://localhost:4242/register]
-i, --iface <iface> Specify the local IP interface.
-t, --tunnel <tunnel> Set the tunnel endpoint's hostname. If omitted, the tunnel is disabled.
-h, --help Print this help menu.
Expand Down Expand Up @@ -137,37 +137,66 @@ fn main() {
controller.run();
}

#[test]
fn options_are_good() {
// short form options
{
let argv = || vec!["foxbox", "-p", "1234", "-n", "foobar",
"-w", "4567", "-v"];

let args: Args = Args::docopt().argv(argv().into_iter())
.decode()
.unwrap_or_else(|e| e.exit());

assert_eq!(args.flag_verbose, true);
assert_eq!(args.flag_name, Some("foobar".to_string()));
assert_eq!(args.flag_port, Some(1234));
assert_eq!(args.flag_wsport, Some(4567));
assert_eq!(args.flag_help, false);
}
// long form options
{
let argv = || vec!["foxbox", "--port", "1234",
"--name", "foobar", "--wsport", "4567",
"--verbose"];

let args: Args = Args::docopt().argv(argv().into_iter())
.decode()
.unwrap_or_else(|e| e.exit());

assert_eq!(args.flag_verbose, true);
assert_eq!(args.flag_name, Some("foobar".to_string()));
assert_eq!(args.flag_port, Some(1234));
assert_eq!(args.flag_wsport, Some(4567));
assert_eq!(args.flag_help, false);
#[cfg(test)]
describe! main {
describe! args {
it "should have default values" {
let argv = || vec!["foxbox"];
let args: super::super::Args = super::super::Args::docopt().argv(argv().into_iter())
.decode().unwrap();

assert_eq!(args.flag_verbose, false);
assert_eq!(args.flag_name.unwrap(), "foxbox");
assert_eq!(args.flag_port.unwrap(), 3000);
assert_eq!(args.flag_wsport.unwrap(), 4000);
assert_eq!(args.flag_register.unwrap(), "http://localhost:4242/register");
assert_eq!(args.flag_iface, None);
assert_eq!(args.flag_tunnel, None);
assert_eq!(args.flag_help, false);
}

it "should support short form" {
let argv = || vec!["foxbox",
"-v",
"-p", "1234",
"-n", "foobar",
"-w", "4567",
"-r", "http://foo.bar:6868/register",
"-i", "eth99",
"-t", "tunnel.host"];

let args: super::super::Args = super::super::Args::docopt().argv(argv().into_iter())
.decode().unwrap();

assert_eq!(args.flag_verbose, true);
assert_eq!(args.flag_name.unwrap(), "foobar");
assert_eq!(args.flag_port.unwrap(), 1234);
assert_eq!(args.flag_wsport.unwrap(), 4567);
assert_eq!(args.flag_register.unwrap(), "http://foo.bar:6868/register");
assert_eq!(args.flag_iface.unwrap(), "eth99");
assert_eq!(args.flag_tunnel.unwrap(), "tunnel.host");
}

it "should support long form" {
let argv = || vec!["foxbox",
"--verbose",
"--port", "1234",
"--name", "foobar",
"--wsport", "4567",
"--register", "http://foo.bar:6868/register",
"--iface", "eth99",
"--tunnel", "tunnel.host"];

let args: super::super::Args = super::super::Args::docopt().argv(argv().into_iter())
.decode().unwrap();

assert_eq!(args.flag_verbose, true);
assert_eq!(args.flag_name.unwrap(), "foobar");
assert_eq!(args.flag_port.unwrap(), 1234);
assert_eq!(args.flag_wsport.unwrap(), 4567);
assert_eq!(args.flag_register.unwrap(), "http://foo.bar:6868/register");
assert_eq!(args.flag_iface.unwrap(), "eth99");
assert_eq!(args.flag_tunnel.unwrap(), "tunnel.host");
}
}
}

0 comments on commit e4b2814

Please sign in to comment.