From 58dd576adcfd2ec9f4d7c247c5621141bb48b406 Mon Sep 17 00:00:00 2001 From: Kay Kurokawa Date: Thu, 1 Jun 2017 12:10:19 -0400 Subject: [PATCH] add CLI docopt parsing tests to integration tests --- lbrynet/lbrynet_daemon/Daemon.py | 22 +++++++++++++++++++ tests/integration/test_integration.py | 31 ++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/lbrynet/lbrynet_daemon/Daemon.py b/lbrynet/lbrynet_daemon/Daemon.py index a473b286b..095a9fbb4 100644 --- a/lbrynet/lbrynet_daemon/Daemon.py +++ b/lbrynet/lbrynet_daemon/Daemon.py @@ -2715,6 +2715,28 @@ t return d + + @defer.inlineCallbacks + def jsonrpc_cli_test_command(self, pos_arg, pos_args=[], pos_arg2=None, pos_arg3=None): + """ + This command is only for testing the CLI argument parsing + Usage: + cli_test_command ( | --pos_arg=) + [...] [--pos_arg2=] + [--pos_arg3=] + + Options: + , --pos_arg2= : pos arg 2 + , --pos_arg3= : pos arg 3 + + Returns: + pos args + """ + out = (pos_arg, pos_args, pos_arg2, pos_arg3) + response = yield self._render_response(out) + defer.returnValue(response) + + class _ResolveNameHelper(object): def __init__(self, daemon, name, force_refresh): self.daemon = daemon diff --git a/tests/integration/test_integration.py b/tests/integration/test_integration.py index f53387b85..ef6fd1797 100644 --- a/tests/integration/test_integration.py +++ b/tests/integration/test_integration.py @@ -22,7 +22,7 @@ def lbrynet_cli(commands): cli_cmd=['lbrynet-cli'] for cmd in commands: cli_cmd.append(cmd) - p = subprocess.Popen(cli_cmd,shell=False,stdout=subprocess.PIPE) + p = subprocess.Popen(cli_cmd,shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE) out,err = p.communicate() return out,err @@ -65,6 +65,35 @@ class TestIntegration(unittest.TestCase): out = json.loads(out) self.assertTrue(out['is_running']) + + def test_cli_docopts(self): + out,err = lbrynet_cli(['cli_test_command']) + self.assertEqual('',out) + self.assertTrue('Usage' in err) + + out,err = lbrynet_cli(['cli_test_command','1','--not_a_arg=1']) + self.assertEqual('',out) + self.assertTrue('Usage' in err) + + out,err = lbrynet_cli(['cli_test_command','1']) + out = json.loads(out) + self.assertEqual([1,[],None,None], out) + + out,err = lbrynet_cli(['cli_test_command','1','--pos_arg2=1']) + out = json.loads(out) + self.assertEqual([1,[],1,None], out) + + + out,err = lbrynet_cli(['cli_test_command','1', '--pos_arg2=2','--pos_arg3=3']) + out = json.loads(out) + self.assertEqual([1,[],2,3], out) + + out,err = lbrynet_cli(['cli_test_command','1','2','3']) + out = json.loads(out) + # TODO: variable length arguments don't have guess_type() on them + self.assertEqual([1,['2','3'],None,None], out) + + def test_status(self): out = lbrynet.status() self.assertTrue(out['is_running'])