summaryrefslogtreecommitdiff
path: root/tests/test_pyscript.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_pyscript.py')
-rw-r--r--tests/test_pyscript.py52
1 files changed, 51 insertions, 1 deletions
diff --git a/tests/test_pyscript.py b/tests/test_pyscript.py
index 5d685c41..8d0cefd8 100644
--- a/tests/test_pyscript.py
+++ b/tests/test_pyscript.py
@@ -8,7 +8,8 @@ import os
import pytest
from cmd2.cmd2 import Cmd, with_argparser
from cmd2 import argparse_completer
-from .conftest import run_cmd, normalize, StdOut, complete_tester
+from .conftest import run_cmd, StdOut
+from cmd2.utils import namedtuple_with_defaults
class PyscriptExample(Cmd):
ratings_types = ['G', 'PG', 'PG-13', 'R', 'NC-17']
@@ -82,6 +83,16 @@ class PyscriptExample(Cmd):
@with_argparser(foo_parser)
def do_foo(self, args):
print('foo ' + str(args.__dict__))
+ if self._in_py:
+ FooResult = namedtuple_with_defaults('FooResult',
+ ['counter', 'trueval', 'constval',
+ 'variable', 'optional', 'zeroormore'])
+ self._last_result = FooResult(**{'counter': args.counter,
+ 'trueval': args.trueval,
+ 'constval': args.constval,
+ 'variable': args.variable,
+ 'optional': args.optional,
+ 'zeroormore': args.zeroormore})
bar_parser = argparse_completer.ACArgumentParser(prog='bar')
bar_parser.add_argument('first')
@@ -101,6 +112,23 @@ def ps_app():
return c
+class PyscriptCustomNameExample(Cmd):
+ def __init__(self):
+ super().__init__()
+ self.pyscript_name = 'custom'
+
+ def do_echo(self, out):
+ print(out)
+
+
+@pytest.fixture
+def ps_echo():
+ c = PyscriptCustomNameExample()
+ c.stdout = StdOut()
+
+ return c
+
+
@pytest.mark.parametrize('command, pyscript_file', [
('help', 'help.py'),
('help media', 'help_media.py'),
@@ -162,3 +190,25 @@ def test_pyscript_errors(ps_app, capsys, command, error):
assert 'Traceback' in err
assert error in err
+
+@pytest.mark.parametrize('pyscript_file, exp_out', [
+ ('foo4.py', 'Success'),
+])
+def test_pyscript_results(ps_app, capsys, request, pyscript_file, exp_out):
+ test_dir = os.path.dirname(request.module.__file__)
+ python_script = os.path.join(test_dir, 'pyscript', pyscript_file)
+
+ run_cmd(ps_app, 'pyscript {}'.format(python_script))
+ expected, _ = capsys.readouterr()
+ assert len(expected) > 0
+ assert exp_out in expected
+
+
+def test_pyscript_custom_name(ps_echo, capsys):
+ message = 'blah!'
+ run_cmd(ps_echo, 'py custom.echo("{}")'.format(message))
+ expected, _ = capsys.readouterr()
+ assert len(expected) > 0
+ expected = expected.splitlines()
+ assert message == expected[0]
+