import rnsh.args import shlex import docopt def test_program_args(): docopt_threw = False try: args = rnsh.args.Args(shlex.split("rnsh -l -n one two three")) assert args.listen assert args.program == "one" assert args.program_args == ["two", "three"] assert args.command_line == ["one", "two", "three"] except docopt.DocoptExit: docopt_threw = True assert not docopt_threw def test_program_args_dash(): docopt_threw = False try: args = rnsh.args.Args(shlex.split("rnsh -l -n -- one -l -C")) assert args.listen assert args.program == "one" assert args.program_args == ["-l", "-C"] assert args.command_line == ["one", "-l", "-C"] except docopt.DocoptExit: docopt_threw = True assert not docopt_threw def test_program_initiate_no_args(): docopt_threw = False try: args = rnsh.args.Args(shlex.split("rnsh one")) assert not args.listen assert args.destination == "one" assert not args.no_id assert args.command_line == [] except docopt.DocoptExit: docopt_threw = True assert not docopt_threw def test_program_initiate_no_auth(): docopt_threw = False try: args = rnsh.args.Args(shlex.split("rnsh -N one")) assert not args.listen assert args.destination == "one" assert args.no_id assert args.command_line == [] except docopt.DocoptExit: docopt_threw = True assert not docopt_threw def test_program_initiate_dash_args(): docopt_threw = False try: args = rnsh.args.Args(shlex.split("rnsh --config ~/Projects/rnsh/testconfig -vvvvvvv a5f72aefc2cb3cdba648f73f77c4e887 -- -l")) assert not args.listen assert args.config == "~/Projects/rnsh/testconfig" assert args.verbose == 7 assert args.destination == "a5f72aefc2cb3cdba648f73f77c4e887" assert args.command_line == ["-l"] except docopt.DocoptExit: docopt_threw = True assert not docopt_threw def test_program_listen_dash_args(): docopt_threw = False try: args = rnsh.args.Args(shlex.split("rnsh -l --config ~/Projects/rnsh/testconfig -n -C -- /bin/pwd")) assert args.listen assert args.config == "~/Projects/rnsh/testconfig" assert args.destination is None assert args.no_auth assert args.no_remote_cmd assert args.command_line == ["/bin/pwd"] except docopt.DocoptExit: docopt_threw = True assert not docopt_threw def test_program_listen_config_print(): docopt_threw = False try: args = rnsh.args.Args(shlex.split("rnsh -l --config testconfig -p")) assert args.listen assert args.config == "testconfig" assert args.print_identity assert args.command_line == [] except docopt.DocoptExit: docopt_threw = True assert not docopt_threw def test_split_at(): a, b = rnsh.args._split_array_at(["one", "two", "three"], "two") assert a == ["one"] assert b == ["three"] def test_split_at_not_found(): a, b = rnsh.args._split_array_at(["one", "two", "three"], "four") assert a == ["one", "two", "three"] assert b == []