summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/pyscript/bar1.py3
-rw-r--r--tests/pyscript/custom_echo.py3
-rw-r--r--tests/pyscript/foo1.py3
-rw-r--r--tests/pyscript/foo2.py3
-rw-r--r--tests/pyscript/foo3.py3
-rw-r--r--tests/pyscript/foo4.py10
-rw-r--r--tests/pyscript/help.py2
-rw-r--r--tests/pyscript/help_media.py3
-rw-r--r--tests/pyscript/media_movies_add1.py3
-rw-r--r--tests/pyscript/media_movies_add2.py3
-rw-r--r--tests/pyscript/media_movies_list1.py3
-rw-r--r--tests/pyscript/media_movies_list2.py3
-rw-r--r--tests/pyscript/media_movies_list3.py3
-rw-r--r--tests/pyscript/media_movies_list4.py3
-rw-r--r--tests/pyscript/media_movies_list5.py3
-rw-r--r--tests/pyscript/media_movies_list6.py3
-rw-r--r--tests/pyscript/media_movies_list7.py3
-rw-r--r--tests/pyscript/pyscript_dir.py (renamed from tests/pyscript/pyscript_dir1.py)0
-rw-r--r--tests/pyscript/pyscript_dir2.py4
-rw-r--r--tests/test_pyscript.py244
20 files changed, 11 insertions, 294 deletions
diff --git a/tests/pyscript/bar1.py b/tests/pyscript/bar1.py
deleted file mode 100644
index 0f2b1e5e..00000000
--- a/tests/pyscript/bar1.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.bar('11', '22')
diff --git a/tests/pyscript/custom_echo.py b/tests/pyscript/custom_echo.py
deleted file mode 100644
index 3a79133a..00000000
--- a/tests/pyscript/custom_echo.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-custom.cmd_echo = True
-custom.echo('blah!')
diff --git a/tests/pyscript/foo1.py b/tests/pyscript/foo1.py
deleted file mode 100644
index 443282a5..00000000
--- a/tests/pyscript/foo1.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.foo('aaa', 'bbb', counter=3, trueval=True, constval=True)
diff --git a/tests/pyscript/foo2.py b/tests/pyscript/foo2.py
deleted file mode 100644
index 9aa37105..00000000
--- a/tests/pyscript/foo2.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.foo('11', '22', '33', '44', counter=3, trueval=True, constval=True)
diff --git a/tests/pyscript/foo3.py b/tests/pyscript/foo3.py
deleted file mode 100644
index e4384076..00000000
--- a/tests/pyscript/foo3.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.foo('11', '22', '33', '44', '55', '66', counter=3, trueval=False, constval=False)
diff --git a/tests/pyscript/foo4.py b/tests/pyscript/foo4.py
deleted file mode 100644
index a601ccd8..00000000
--- a/tests/pyscript/foo4.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-result = app.foo('aaa', 'bbb', counter=3)
-out_text = 'Fail'
-if result:
- data = result.data
- if 'aaa' in data.variable and 'bbb' in data.variable and data.counter == 3:
- out_text = 'Success'
-
-print(out_text)
diff --git a/tests/pyscript/help.py b/tests/pyscript/help.py
index 3f24246d..933f42bc 100644
--- a/tests/pyscript/help.py
+++ b/tests/pyscript/help.py
@@ -1,3 +1,3 @@
# flake8: noqa F821
app.cmd_echo = True
-app.help()
+app('help')
diff --git a/tests/pyscript/help_media.py b/tests/pyscript/help_media.py
deleted file mode 100644
index 38c4a2f8..00000000
--- a/tests/pyscript/help_media.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.help('media')
diff --git a/tests/pyscript/media_movies_add1.py b/tests/pyscript/media_movies_add1.py
deleted file mode 100644
index b5045a39..00000000
--- a/tests/pyscript/media_movies_add1.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media.movies.add('My Movie', 'PG-13', director=('George Lucas', 'J. J. Abrams'))
diff --git a/tests/pyscript/media_movies_add2.py b/tests/pyscript/media_movies_add2.py
deleted file mode 100644
index 91dbbc6b..00000000
--- a/tests/pyscript/media_movies_add2.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media.movies.add('My Movie', 'PG-13', actor=('Mark Hamill'), director=('George Lucas', 'J. J. Abrams'))
diff --git a/tests/pyscript/media_movies_list1.py b/tests/pyscript/media_movies_list1.py
deleted file mode 100644
index 505d1f91..00000000
--- a/tests/pyscript/media_movies_list1.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media.movies.list()
diff --git a/tests/pyscript/media_movies_list2.py b/tests/pyscript/media_movies_list2.py
deleted file mode 100644
index 69e0d3c5..00000000
--- a/tests/pyscript/media_movies_list2.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media().movies().list()
diff --git a/tests/pyscript/media_movies_list3.py b/tests/pyscript/media_movies_list3.py
deleted file mode 100644
index c4f0cc1e..00000000
--- a/tests/pyscript/media_movies_list3.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app('media movies list')
diff --git a/tests/pyscript/media_movies_list4.py b/tests/pyscript/media_movies_list4.py
deleted file mode 100644
index 29e98fe7..00000000
--- a/tests/pyscript/media_movies_list4.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media.movies.list(actor='Mark Hamill')
diff --git a/tests/pyscript/media_movies_list5.py b/tests/pyscript/media_movies_list5.py
deleted file mode 100644
index 1c249ebf..00000000
--- a/tests/pyscript/media_movies_list5.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media.movies.list(actor=('Mark Hamill', 'Carrie Fisher'))
diff --git a/tests/pyscript/media_movies_list6.py b/tests/pyscript/media_movies_list6.py
deleted file mode 100644
index c16ae6c5..00000000
--- a/tests/pyscript/media_movies_list6.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media.movies.list(rating='PG')
diff --git a/tests/pyscript/media_movies_list7.py b/tests/pyscript/media_movies_list7.py
deleted file mode 100644
index d4ca7dca..00000000
--- a/tests/pyscript/media_movies_list7.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# flake8: noqa F821
-app.cmd_echo = True
-app.media.movies.list(rating=('PG', 'PG-13'))
diff --git a/tests/pyscript/pyscript_dir1.py b/tests/pyscript/pyscript_dir.py
index 81814d70..81814d70 100644
--- a/tests/pyscript/pyscript_dir1.py
+++ b/tests/pyscript/pyscript_dir.py
diff --git a/tests/pyscript/pyscript_dir2.py b/tests/pyscript/pyscript_dir2.py
deleted file mode 100644
index ebbbf712..00000000
--- a/tests/pyscript/pyscript_dir2.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# flake8: noqa F821
-out = dir(app.media)
-out.sort()
-print(out)
diff --git a/tests/test_pyscript.py b/tests/test_pyscript.py
index 692a498b..78500185 100644
--- a/tests/test_pyscript.py
+++ b/tests/test_pyscript.py
@@ -1,255 +1,31 @@
# coding=utf-8
# flake8: noqa E302
"""
-Unit/functional testing for argparse completer in cmd2
-
-Copyright 2018 Eric Lin <anselor@gmail.com>
-Released under MIT license, see LICENSE file
+Unit/functional testing for pytest in cmd2
"""
import os
-import pytest
-from cmd2.cmd2 import Cmd, with_argparser
-from cmd2 import argparse_completer
-from .conftest import run_cmd, normalize
-from cmd2.utils import namedtuple_with_defaults, StdSim
-
-
-class PyscriptExample(Cmd):
- ratings_types = ['G', 'PG', 'PG-13', 'R', 'NC-17']
-
- def _do_media_movies(self, args) -> None:
- if not args.command:
- self.do_help('media movies')
- else:
- self.poutput('media movies ' + str(args.__dict__))
-
- def _do_media_shows(self, args) -> None:
- if not args.command:
- self.do_help('media shows')
-
- if not args.command:
- self.do_help('media shows')
- else:
- self.poutput('media shows ' + str(args.__dict__))
-
- media_parser = argparse_completer.ACArgumentParser(prog='media')
-
- media_types_subparsers = media_parser.add_subparsers(title='Media Types', dest='type')
-
- movies_parser = media_types_subparsers.add_parser('movies')
- movies_parser.set_defaults(func=_do_media_movies)
-
- movies_commands_subparsers = movies_parser.add_subparsers(title='Commands', dest='command')
-
- movies_list_parser = movies_commands_subparsers.add_parser('list')
-
- movies_list_parser.add_argument('-t', '--title', help='Title Filter')
- movies_list_parser.add_argument('-r', '--rating', help='Rating Filter', nargs='+',
- choices=ratings_types)
- movies_list_parser.add_argument('-d', '--director', help='Director Filter')
- movies_list_parser.add_argument('-a', '--actor', help='Actor Filter', action='append')
-
- movies_add_parser = movies_commands_subparsers.add_parser('add')
- movies_add_parser.add_argument('title', help='Movie Title')
- movies_add_parser.add_argument('rating', help='Movie Rating', choices=ratings_types)
- movies_add_parser.add_argument('-d', '--director', help='Director', nargs=(1, 2), required=True)
- movies_add_parser.add_argument('actor', help='Actors', nargs='*')
-
- movies_delete_parser = movies_commands_subparsers.add_parser('delete')
-
- shows_parser = media_types_subparsers.add_parser('shows')
- shows_parser.set_defaults(func=_do_media_shows)
-
- shows_commands_subparsers = shows_parser.add_subparsers(title='Commands', dest='command')
-
- shows_list_parser = shows_commands_subparsers.add_parser('list')
-
- @with_argparser(media_parser)
- def do_media(self, args):
- """Media management command demonstrates multiple layers of sub-commands being handled by AutoCompleter"""
- func = getattr(args, 'func', None)
- if func is not None:
- # Call whatever subcommand function was selected
- func(self, args)
- else:
- # No subcommand was provided, so call help
- self.do_help('media')
-
- foo_parser = argparse_completer.ACArgumentParser(prog='foo')
- foo_parser.add_argument('-c', dest='counter', action='count')
- foo_parser.add_argument('-t', dest='trueval', action='store_true')
- foo_parser.add_argument('-n', dest='constval', action='store_const', const=42)
- foo_parser.add_argument('variable', nargs=(2, 3))
- foo_parser.add_argument('optional', nargs='?')
- foo_parser.add_argument('zeroormore', nargs='*')
-
- @with_argparser(foo_parser)
- def do_foo(self, args):
- self.poutput('foo ' + str(sorted(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')
- bar_parser.add_argument('oneormore', nargs='+')
- bar_parser.add_argument('-a', dest='aaa')
-
- @with_argparser(bar_parser)
- def do_bar(self, args):
- out = 'bar '
- arg_dict = args.__dict__
- keys = list(arg_dict.keys())
- keys.sort()
- out += '{'
- for key in keys:
- out += "'{}':'{}'".format(key, arg_dict[key])
- self.poutput(out)
-
-
-@pytest.fixture
-def ps_app():
- c = PyscriptExample()
- c.stdout = StdSim(c.stdout)
- return c
-
-
-class PyscriptCustomNameExample(Cmd):
- def __init__(self):
- super().__init__()
- self.pyscript_name = 'custom'
- def do_echo(self, out):
- self.poutput(out)
+from .conftest import run_cmd
-@pytest.fixture
-def ps_echo():
- c = PyscriptCustomNameExample()
- c.stdout = StdSim(c.stdout)
- return c
-
-
-@pytest.mark.parametrize('command, pyscript_file', [
- ('help', 'help.py'),
- ('help media', 'help_media.py'),
-])
-def test_pyscript_help(ps_app, request, command, pyscript_file):
+def test_pyscript_help(base_app, request):
test_dir = os.path.dirname(request.module.__file__)
- python_script = os.path.join(test_dir, 'pyscript', pyscript_file)
- expected = run_cmd(ps_app, command)
+ python_script = os.path.join(test_dir, 'pyscript', 'help.py')
+ expected = run_cmd(base_app, 'help')
assert len(expected) > 0
assert len(expected[0]) > 0
- out = run_cmd(ps_app, 'pyscript {}'.format(python_script))
+ out = run_cmd(base_app, 'pyscript {}'.format(python_script))
assert len(out) > 0
assert out == expected
-@pytest.mark.parametrize('command, pyscript_file', [
- ('media movies list', 'media_movies_list1.py'),
- ('media movies list', 'media_movies_list2.py'),
- ('media movies list', 'media_movies_list3.py'),
- ('media movies list -a "Mark Hamill"', 'media_movies_list4.py'),
- ('media movies list -a "Mark Hamill" -a "Carrie Fisher"', 'media_movies_list5.py'),
- ('media movies list -r PG', 'media_movies_list6.py'),
- ('media movies list -r PG PG-13', 'media_movies_list7.py'),
- ('media movies add "My Movie" PG-13 --director "George Lucas" "J. J. Abrams"',
- 'media_movies_add1.py'),
- ('media movies add "My Movie" PG-13 --director "George Lucas" "J. J. Abrams" "Mark Hamill"',
- 'media_movies_add2.py'),
- ('foo aaa bbb -ccc -t -n', 'foo1.py'),
- ('foo 11 22 33 44 -ccc -t -n', 'foo2.py'),
- ('foo 11 22 33 44 55 66 -ccc', 'foo3.py'),
- ('bar 11 22', 'bar1.py'),
-])
-def test_pyscript_out(ps_app, request, command, pyscript_file):
+def test_pyscript_dir(base_app, capsys, request):
test_dir = os.path.dirname(request.module.__file__)
- python_script = os.path.join(test_dir, 'pyscript', pyscript_file)
- expected = run_cmd(ps_app, command)
- assert expected
-
- out = run_cmd(ps_app, 'pyscript {}'.format(python_script))
- assert out
- assert out == expected
-
-
-@pytest.mark.parametrize('command, error', [
- ('app.noncommand', 'AttributeError'),
- ('app.media.noncommand', 'AttributeError'),
- ('app.media.movies.list(artist="Invalid Keyword")', 'TypeError'),
- ('app.foo(counter="a")', 'TypeError'),
- ('app.foo("aaa")', 'ValueError'),
-])
-def test_pyscript_errors(ps_app, capsys, command, error):
- run_cmd(ps_app, 'py {}'.format(command))
- _, err = capsys.readouterr()
-
- assert len(err) > 0
- 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
-
+ python_script = os.path.join(test_dir, 'pyscript', 'pyscript_dir.py')
-@pytest.mark.parametrize('expected, pyscript_file', [
- ("['_relative_load', 'alias', 'bar', 'cmd_echo', 'edit', 'eof', 'eos', 'foo', 'help', 'history', 'load', 'macro', 'media', 'py', 'pyscript', 'quit', 'set', 'shell', 'shortcuts']",
- 'pyscript_dir1.py'),
- ("['movies', 'shows']", 'pyscript_dir2.py')
-])
-def test_pyscript_dir(ps_app, capsys, request, expected, pyscript_file):
- 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))
+ run_cmd(base_app, 'pyscript {}'.format(python_script))
out, _ = capsys.readouterr()
out = out.strip()
assert len(out) > 0
- assert out == expected
-
-
-def test_pyscript_custom_name(ps_echo, request):
- message = 'blah!'
-
- test_dir = os.path.dirname(request.module.__file__)
- python_script = os.path.join(test_dir, 'pyscript', 'custom_echo.py')
-
- out = run_cmd(ps_echo, 'pyscript {}'.format(python_script))
- assert out
- assert message == out[0]
-
-
-def test_pyscript_argparse_checks(ps_app, capsys):
- # Test command that has nargs.REMAINDER and make sure all tokens are accepted
- # Include a flag in the REMAINDER section to show that they are processed as literals in that section
- run_cmd(ps_app, 'py app.alias.create("my_alias", "alias_command", "command_arg1", "-h")')
- out = run_cmd(ps_app, 'alias list my_alias')
- assert out == normalize('alias create my_alias alias_command command_arg1 -h')
-
- # Specify flag outside of keyword argument
- run_cmd(ps_app, 'py app.help("-h")')
- _, err = capsys.readouterr()
- assert '-h appears to be a flag' in err
-
- # Specify list with flag outside of keyword argument
- run_cmd(ps_app, 'py app.help(["--help"])')
- _, err = capsys.readouterr()
- assert '--help appears to be a flag' in err
+ assert out == "['cmd_echo']"