diff --git a/cliff/tests/test_commandmanager.py b/cliff/tests/test_commandmanager.py index 53ff464d..e0cbfbde 100644 --- a/cliff/tests/test_commandmanager.py +++ b/cliff/tests/test_commandmanager.py @@ -12,68 +12,63 @@ from unittest import mock -import testscenarios # type: ignore - from cliff import command from cliff import commandmanager from cliff.tests import base from cliff.tests import utils -load_tests = testscenarios.load_tests_apply_scenarios - - class TestLookupAndFind(base.TestBase): scenarios = [ - ('one-word', {'argv': ['one']}), - ('two-words', {'argv': ['two', 'words']}), - ('three-words', {'argv': ['three', 'word', 'command']}), + ('one-word', ['one']), + ('two-words', ['two', 'words']), + ('three-words', ['three', 'word', 'command']), ] - argv: list[str] - def test(self): - mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) - cmd, name, remaining = mgr.find_command(self.argv) - self.assertTrue(cmd) - self.assertEqual(' '.join(self.argv), name) - self.assertFalse(remaining) + for scenario, argv in self.scenarios: + with self.subTest(scenario, argv=argv): + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) + cmd, name, remaining = mgr.find_command(argv) + self.assertTrue(cmd) + self.assertEqual(' '.join(argv), name) + self.assertFalse(remaining) class TestLookupWithRemainder(base.TestBase): scenarios = [ - ('one', {'argv': ['one', '--opt']}), - ('two', {'argv': ['two', 'words', '--opt']}), - ('three', {'argv': ['three', 'word', 'command', '--opt']}), + ('one', ['one', '--opt']), + ('two', ['two', 'words', '--opt']), + ('three', ['three', 'word', 'command', '--opt']), ] - argv: list[str] - def test(self): - mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) - cmd, name, remaining = mgr.find_command(self.argv) - self.assertTrue(cmd) - self.assertEqual(['--opt'], remaining) + for scenario, argv in self.scenarios: + with self.subTest(scenario, argv=argv): + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) + cmd, name, remaining = mgr.find_command(argv) + self.assertTrue(cmd) + self.assertEqual(['--opt'], remaining) class TestFindInvalidCommand(base.TestBase): scenarios = [ - ('no-such-command', {'argv': ['a', '-b']}), - ('no-command-given', {'argv': ['-b']}), + ('no-such-command', ['a', '-b']), + ('no-command-given', ['-b']), ] - argv: list[str] - def test(self): - mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) - try: - mgr.find_command(self.argv) - except ValueError as err: - # make sure err include 'a' when ['a', '-b'] - self.assertIn(self.argv[0], str(err)) - self.assertIn('-b', str(err)) - else: - self.fail('expected a failure') + for scenario, argv in self.scenarios: + with self.subTest(scenario, argv=argv): + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) + try: + mgr.find_command(argv) + except ValueError as err: + # make sure err include 'a' when ['a', '-b'] + self.assertIn(argv[0], str(err)) + self.assertIn('-b', str(err)) + else: + self.fail('expected a failure') class TestFindUnknownCommand(base.TestBase): @@ -247,19 +242,19 @@ class TestLegacyCommand(base.TestBase): class TestLookupAndFindPartialName(base.TestBase): scenarios = [ - ('one-word', {'argv': ['o']}), - ('two-words', {'argv': ['t', 'w']}), - ('three-words', {'argv': ['t', 'w', 'c']}), + ('one-word', ['o']), + ('two-words', ['t', 'w']), + ('three-words', ['t', 'w', 'c']), ] - argv: list[str] - def test(self): - mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) - cmd, name, remaining = mgr.find_command(self.argv) - self.assertTrue(cmd) - self.assertEqual(' '.join(self.argv), name) - self.assertFalse(remaining) + for scenario, argv in self.scenarios: + with self.subTest(scenario, argv=argv): + mgr = utils.TestCommandManager(utils.TEST_NAMESPACE) + cmd, name, remaining = mgr.find_command(argv) + self.assertTrue(cmd) + self.assertEqual(' '.join(argv), name) + self.assertFalse(remaining) class TestIsModuleIgnored(base.TestBase): diff --git a/test-requirements.txt b/test-requirements.txt index 73c83992..6de45b83 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,10 +1,6 @@ -stestr>=1.0.0 # Apache-2.0 -testtools>=2.2.0 # MIT -testscenarios>=0.4 # Apache-2.0/BSD fixtures>=3.0.0 # Apache-2.0/BSD - -coverage>=5.0 # Apache-2.0 - # sphinx is required in test-requirements in addition to doc/requirements # because there is a sphinx extension that has tests sphinx>=5.0.0 # BSD +stestr>=1.0.0 # Apache-2.0 +testtools>=2.2.0 # MIT diff --git a/tox.ini b/tox.ini index 0c6c0621..9300f2b7 100644 --- a/tox.ini +++ b/tox.ini @@ -60,6 +60,9 @@ deps = commands = sphinx-build -W -b html doc/source doc/build/html [testenv:cover] +deps = + {[testenv]deps} + coverage>=5.0 setenv = {[testenv]setenv} PYTHON=coverage run --source cliff --parallel-mode