From e4b2814dd5dc79431e5ef58e3842c00f84fe8fca Mon Sep 17 00:00:00 2001 From: Johan Lorenzo Date: Wed, 2 Mar 2016 16:00:24 +0100 Subject: [PATCH] Bubble up default environment values to main.rs --- src/main.rs | 101 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 65 insertions(+), 36 deletions(-) diff --git a/src/main.rs b/src/main.rs index 93e3ea83..610c0539 100644 --- a/src/main.rs +++ b/src/main.rs @@ -77,10 +77,10 @@ Usage: foxbox [-v] [-h] [-n ] [-p ] [-w ] [-r ] [-i Options: -v, --verbose Toggle verbose output. - -n, --name Set local hostname. - -p, --port Set port to listen on for http connections. - -w, --wsport Set port to listen on for websocket. - -r, --register Change the url of the registration endpoint. + -n, --name Set local hostname. [default: foxbox] + -p, --port Set port to listen on for http connections. [default: 3000] + -w, --wsport Set port to listen on for websocket. [default: 4000] + -r, --register Change the url of the registration endpoint. [default: http://localhost:4242/register] -i, --iface Specify the local IP interface. -t, --tunnel Set the tunnel endpoint's hostname. If omitted, the tunnel is disabled. -h, --help Print this help menu. @@ -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"); + } } }