diff --git a/mopidy/utils/command.py b/mopidy/utils/command.py index 37ac29c0..3bc65e59 100644 --- a/mopidy/utils/command.py +++ b/mopidy/utils/command.py @@ -7,8 +7,7 @@ class CommandError(Exception): class Command(object): - def __init__(self, name): - self.name = name + def __init__(self): self._children = collections.OrderedDict() self._arguments = [] @@ -25,8 +24,8 @@ class Command(object): return parser - def add_child(self, command): - self._children[command.name] = command + def add_child(self, name, command): + self._children[name] = command def add_argument(self, *args, **kwargs): self._arguments.append((args, kwargs)) diff --git a/tests/utils/command_test.py b/tests/utils/command_test.py index 17d6718c..67fe8735 100644 --- a/tests/utils/command_test.py +++ b/tests/utils/command_test.py @@ -9,48 +9,47 @@ from mopidy.utils import command class CommandParsingTest(unittest.TestCase): def test_command_parsing_returns_namespace(self): - cmd = command.Command(None) + cmd = command.Command() self.assertIsInstance(cmd.parse([]), argparse.Namespace) def test_command_parsing_does_not_contain_args(self): - cmd = command.Command(None) + cmd = command.Command() result = cmd.parse([]) self.assertFalse(hasattr(result, '_args')) def test_sub_command_delegation(self): mock_cmd = mock.Mock(spec=command.Command) - mock_cmd.name = 'foo' - cmd = command.Command(None) - cmd.add_child(mock_cmd) + cmd = command.Command() + cmd.add_child('foo', mock_cmd) cmd.parse(['foo']) mock_cmd.parse.assert_called_with([], mock.ANY) def test_unknown_options_raises_error(self): - cmd = command.Command(None) + cmd = command.Command() with self.assertRaises(command.CommandError): cmd.parse(['--foobar']) def test_invalid_sub_command_raises_error(self): - cmd = command.Command(None) + cmd = command.Command() with self.assertRaises(command.CommandError): cmd.parse(['foo']) def test_command_arguments(self): - cmd = command.Command(None) + cmd = command.Command() cmd.add_argument('--bar') result = cmd.parse(['--bar', 'baz']) self.assertEqual(result.bar, 'baz') def test_command_arguments_and_sub_command(self): - child = command.Command('foo') + child = command.Command() child.add_argument('--baz') - cmd = command.Command(None) + cmd = command.Command() cmd.add_argument('--bar') - cmd.add_child(child) + cmd.add_child('foo', child) result = cmd.parse(['--bar', 'baz', 'foo']) self.assertEqual(result.bar, 'baz') @@ -58,18 +57,13 @@ class CommandParsingTest(unittest.TestCase): def test_multiple_sub_commands(self): mock_foo_cmd = mock.Mock(spec=command.Command) - mock_foo_cmd.name = 'foo' - mock_bar_cmd = mock.Mock(spec=command.Command) - mock_bar_cmd.name = 'bar' - mock_baz_cmd = mock.Mock(spec=command.Command) - mock_baz_cmd.name = 'baz' - cmd = command.Command(None) - cmd.add_child(mock_foo_cmd) - cmd.add_child(mock_bar_cmd) - cmd.add_child(mock_baz_cmd) + cmd = command.Command() + cmd.add_child('foo', mock_foo_cmd) + cmd.add_child('bar', mock_bar_cmd) + cmd.add_child('baz', mock_baz_cmd) cmd.parse(['bar']) mock_bar_cmd.parse.assert_called_with([], mock.ANY) @@ -78,30 +72,30 @@ class CommandParsingTest(unittest.TestCase): mock_baz_cmd.parse.assert_called_with([], mock.ANY) def test_subcommand_may_have_positional(self): - child = command.Command('foo') + child = command.Command() child.add_argument('bar') - cmd = command.Command(None) - cmd.add_child(child) + cmd = command.Command() + cmd.add_child('foo', child) result = cmd.parse(['foo', 'baz']) self.assertEqual(result.bar, 'baz') def test_subcommand_may_have_remainder(self): - child = command.Command('foo') + child = command.Command() child.add_argument('bar', nargs=argparse.REMAINDER) - cmd = command.Command(None) - cmd.add_child(child) + cmd = command.Command() + cmd.add_child('foo', child) result = cmd.parse(['foo', 'baz', 'bep', 'bop']) self.assertEqual(result.bar, ['baz', 'bep', 'bop']) def test_result_stores_choosen_command(self): - child = command.Command('foo') + child = command.Command() - cmd = command.Command(None) - cmd.add_child(child) + cmd = command.Command() + cmd.add_child('foo', child) result = cmd.parse(['foo']) self.assertEqual(result.command, child)