Esempio n. 1
0
 async def test_completion_candidates_for_columns_option(self):
     self.localcfg['columns.torrents'] = SimpleNamespace(options=('a', 'b', 'c'), sep=' , ')
     await self.assert_completion_candidates(ListTorrentsCmd, Args(('ls', '--columns', 'foo'), curarg_index=2),
                                       exp_cands=('a', 'b', 'c'), exp_curarg_seps=(',',))
     await self.assert_completion_candidates(ListTorrentsCmd, Args(('ls', '--columns', 'foo', 'bar'), curarg_index=2),
                                       exp_cands=('a', 'b', 'c'), exp_curarg_seps=(',',))
     await self.assert_completion_candidates(ListTorrentsCmd, Args(('ls', 'bar', '--columns', 'foo'), curarg_index=3),
                                       exp_cands=('a', 'b', 'c'), exp_curarg_seps=(',',))
Esempio n. 2
0
 async def test_completion_candidates_for_posargs(self, mock_fs_path):
     mock_fs_path.return_value = Candidates(('a', 'b', 'c'))
     await self.assert_completion_candidates(AddTorrentsCmd, Args(('add', 'foo'), curarg_index=1),
                                             exp_cands=('a', 'b', 'c'))
     mock_fs_path.assert_called_once_with('foo', glob='*.torrent')
     mock_fs_path.reset_mock()
     await self.assert_completion_candidates(AddTorrentsCmd, Args(('add', 'foo', 'bar'), curarg_index=2),
                                             exp_cands=('a', 'b', 'c'))
     mock_fs_path.assert_called_once_with('bar', glob='*.torrent')
Esempio n. 3
0
 async def test_completion_candidates_for_posargs(self, mock_torrent_filter):
     mock_torrent_filter.return_value = Candidates(('a', 'b', 'c'))
     await self.assert_completion_candidates(ListTorrentsCmd, Args(('ls', 'foo'), curarg_index=1),
                                             exp_cands=('a', 'b', 'c'))
     mock_torrent_filter.assert_called_once_with('foo')
     mock_torrent_filter.reset_mock()
     await self.assert_completion_candidates(ListTorrentsCmd, Args(('ls', 'foo', 'bar'), curarg_index=2),
                                             exp_cands=('a', 'b', 'c'))
     mock_torrent_filter.assert_called_once_with('bar')
Esempio n. 4
0
    async def test_completion_candidates_for_posargs(self, mock_fs_path, mock_torrent_filter):
        mock_torrent_filter.return_value = Candidates(('a', 'b', 'c'))
        cands = await RemoveTorrentsCmd.completion_candidates(Args(('remove', 'foo'), curarg_index=1))
        mock_torrent_filter.assert_called_once_with('foo')
        self.assertEqual(cands, Candidates(('a', 'b', 'c')))

        mock_torrent_filter.reset_mock()
        mock_torrent_filter.return_value = Candidates(('a', 'b', 'c'))
        cands = await RemoveTorrentsCmd.completion_candidates(Args(('remove', 'foo', 'bar'), curarg_index=2))
        mock_torrent_filter.assert_called_once_with('bar')
        self.assertEqual(cands, Candidates(('a', 'b', 'c')))
Esempio n. 5
0
 async def test_completion_candidates__subcmd_parameters(
         self, mock_commands, mock_for_args):
     mock_for_args.return_value = Candidates(('foo', 'bar', 'baz'))
     args = Args(('tab', '--bar', 'a', '-b', 'c'), curarg_index=4)
     await self.assert_completion_candidates(TabCmd,
                                             args,
                                             exp_cands=('foo', 'bar',
                                                        'baz'))
     mock_for_args.assert_called_once_with(
         Args(('a', '-b', 'c'), curarg_index=2, curarg_curpos=0))
     mock_commands.assert_not_called()
Esempio n. 6
0
 def test_setting_is_an_Option(self, mock_rcfg, mock_lcfg):
     for mock_cfg,setting_name in ((mock_lcfg, 'foo'),
                                   (mock_rcfg, 'srv.foo')):
         mock_cfg.__iter__.return_value = (setting_name,)
         mock_cfg.__contains__.return_value = True
         mock_cfg.__getitem__.return_value = usertypes.Option('b', options=('a', 'b', 'c'))
         cmdline = Args((setting_name, '_', '_'), curarg_index=1, curarg_curpos=0)
         self.assertEqual(candidates.setting_values(cmdline), Candidates(('a', 'b', 'c'),
                                                                         label='%s options' % setting_name))
         cmdline = Args((setting_name, '_', '_'), curarg_index=2, curarg_curpos=0)
         self.assertFalse(candidates.setting_values(cmdline))
Esempio n. 7
0
 def test_setting_is_a_Bool(self, mock_rcfg, mock_lcfg):
     for mock_cfg,setting_name in ((mock_lcfg, 'foo'),
                                   (mock_rcfg, 'srv.foo')):
         mock_cfg.__iter__.return_value = (setting_name,)
         mock_cfg.__contains__.return_value = True
         mock_cfg.__getitem__.return_value = usertypes.Bool('1', true=('1',), false=('0',))
         cmdline = Args((setting_name, '_', '_'), curarg_index=1, curarg_curpos=0)
         cands = candidates.setting_values(cmdline)
         exp_cands = Candidates(('1', '0'), label='%s options' % setting_name)
         self.assertEqual(cands, exp_cands)
         cmdline = Args((setting_name, '_', '_'), curarg_index=2, curarg_curpos=0)
         self.assertFalse(candidates.setting_values(cmdline))
Esempio n. 8
0
 async def test_completion_candidates_when_completing_list_values(
         self, mock_candidates):
     mock_candidates.setting_names.return_value = Candidates(('foo', 'bar'))
     mock_candidates.setting_values.return_value = Candidates(
         ('a', 'b', 'c'))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', 'foo', '_', '_', '_'), curarg_index=2),
         exp_cands=('a', 'b', 'c'))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', 'bar', '_', '_', '_'), curarg_index=3),
         exp_cands=('a', 'b', 'c'))
Esempio n. 9
0
 async def test_completion_candidates_on_first_argument(
         self, mock_candidates):
     mock_candidates.fs_path.return_value = Candidates(('a', 'b', 'c'))
     await self.assert_completion_candidates(RcCmd,
                                             Args(('rc', 'hey', 'ho'),
                                                  curarg_index=1),
                                             exp_cands=('a', 'b', 'c'))
     mock_candidates.fs_path.assert_called_once_with(
         'hey', base=os.path.dirname(self.mock_default_rcfile))
     await self.assert_completion_candidates(RcCmd,
                                             Args(('rc', 'hey', 'ho'),
                                                  curarg_index=2),
                                             exp_cands=None)
Esempio n. 10
0
 async def test_completion_candidates__subcmd_name(self, mock_commands,
                                                   mock_for_args):
     mock_commands.return_value = Candidates(('foo', 'bar', 'baz'))
     for args in (
             Args(('tab', 'a', '-b', 'c'), curarg_index=1),
             Args(('tab', '-c', 'foo', 'a', '-b', 'c'), curarg_index=3),
             Args(('tab', '-c', 'foo', '-t', 'bar', 'a', '-b', 'c'),
                  curarg_index=5),
     ):
         await self.assert_completion_candidates(TabCmd,
                                                 args,
                                                 exp_cands=('foo', 'bar',
                                                            'baz'))
         mock_commands.assert_called_with()
         mock_for_args.assert_not_called()
Esempio n. 11
0
 async def test_completion_candidates_for_path_option(self, mock_fs_path):
     mock_fs_path.return_value = Candidates(('a', 'b', 'c'))
     self.remotecfg['path.complete'] = '/bar/baz'
     await self.assert_completion_candidates(AddTorrentsCmd, Args(('add', '--path', 'foo', 'x.torrent'), curarg_index=2),
                                             exp_cands=('a', 'b', 'c'))
     mock_fs_path.assert_called_once_with('foo', base='/bar/baz', directories_only=True)
     mock_fs_path.reset_mock()
     await self.assert_completion_candidates(AddTorrentsCmd, Args(('add', 'x.torrent', '--path', 'foo'), curarg_index=3),
                                             exp_cands=('a', 'b', 'c'))
     mock_fs_path.assert_called_once_with('foo', base='/bar/baz', directories_only=True)
     mock_fs_path.reset_mock()
     await self.assert_completion_candidates(AddTorrentsCmd, Args(('add', 'x.torrent', 'y.torrent', '--path', 'foo'),
                                                                  curarg_index=4),
                                             exp_cands=('a', 'b', 'c'))
     mock_fs_path.assert_called_once_with('foo', base='/bar/baz', directories_only=True)
Esempio n. 12
0
 async def test_completion_candidates_for_sort_option(
         self, mock_candidates):
     mock_candidates.sort_orders.return_value = Candidates(
         ('mock sort orders', ))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', '--sort', ''), curarg_index=2),
         exp_cands=('mock sort orders', ))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', '--sort', 'b'), curarg_index=2, curarg_curpos=1),
         exp_cands=('mock sort orders', ))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', '--sort', 'bar'), curarg_index=2, curarg_curpos=2),
         exp_cands=('mock sort orders', ))
Esempio n. 13
0
 async def test_completion_candidates__own_parameters(
         self, mock_completion_candidates_opts, mock_commands,
         mock_for_args):
     mock_completion_candidates_opts.return_value = Candidates(
         ('foo', 'bar', 'baz'))
     for args in (Args(('tab', '-c', 'foo', '-t', '', 'a', '-b', 'c'),
                       curarg_index=4),
                  Args(('tab', '-c', 'foo', '-t', 'bar', 'a', '-b', 'c'),
                       curarg_index=2,
                       curarg_curpos=2)):
         await self.assert_completion_candidates(TabCmd,
                                                 args,
                                                 exp_cands=('foo', 'bar',
                                                            'baz'))
         mock_completion_candidates_opts.assert_called_with(args)
         mock_for_args.assert_not_called()
         mock_commands.assert_not_called()
Esempio n. 14
0
 async def test_completion_candidates__no_subcmd(
         self, mock_completion_candidates_opts, mock_commands,
         mock_for_args):
     mock_completion_candidates_opts.return_value = Candidates(
         ('foo', 'bar', 'baz'))
     for args in (Args(('bind', ), curarg_index=0),
                  Args(('bind', '-d', 'bar'), curarg_index=1),
                  Args(('bind', '-d', 'bar'), curarg_index=2),
                  Args(('bind', '-c', 'foo', '-d', 'bar'), curarg_index=3),
                  Args(('bind', '-c', 'foo', '-d', 'bar'), curarg_index=4)):
         await self.assert_completion_candidates(BindCmd,
                                                 args,
                                                 exp_cands=('foo', 'bar',
                                                            'baz'))
         mock_completion_candidates_opts.assert_called_with(args)
         mock_for_args.assert_not_called()
         mock_commands.assert_not_called()
Esempio n. 15
0
 async def test_completion_candidates__subcmd_parameters(
         self, mock_commands, mock_for_args):
     mock_for_args.return_value = Candidates(('foo', 'bar', 'baz'))
     for args in (Args(('bind', 'alt-x', 'a', '-b', 'c'), curarg_index=4),
                  Args(('bind', '-d', 'bar', 'alt-x', 'a', '-b', 'c'),
                       curarg_index=6),
                  Args(('bind', '-c', 'foo', '-d', 'bar', 'alt-x', 'a',
                        '-b', 'c'),
                       curarg_index=8)):
         await self.assert_completion_candidates(BindCmd,
                                                 args,
                                                 exp_cands=('foo', 'bar',
                                                            'baz'))
         mock_for_args.assert_called_once_with(
             Args(('a', '-b', 'c'), curarg_index=2))
         mock_for_args.reset_mock()
         mock_commands.assert_not_called()
Esempio n. 16
0
 async def test_completion_candidates_for_column_option(
         self, mock_candidates):
     mock_candidates.column_names.return_value = Candidates(
         ('mock columns', ))
     await self.assert_completion_candidates(SetCmd,
                                             Args(('set', '--columns', ''),
                                                  curarg_index=2),
                                             exp_cands=('mock columns', ))
     await self.assert_completion_candidates(SetCmd,
                                             Args(('set', '--columns', 'f'),
                                                  curarg_index=2,
                                                  curarg_curpos=1),
                                             exp_cands=('mock columns', ))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', '--columns', 'foo'), curarg_index=2, curarg_curpos=2),
         exp_cands=('mock columns', ))
Esempio n. 17
0
    async def test_TUI_completion_candidates_for_posargs_with_two_args_on_first_arg(self, mock_fs_path, mock_torrent_filter):
        from stig.commands.tui import MoveTorrentsCmd
        mock_torrent_filter.return_value = (Candidates(('a', 'b', 'c')),)

        cands = await MoveTorrentsCmd.completion_candidates(Args(('move', 'foo', 'bar'), curarg_index=1))
        mock_torrent_filter.assert_called_once_with('foo')
        mock_fs_path.assert_not_called()
        self.assertEqual(cands, (Candidates(('a', 'b', 'c')),))
Esempio n. 18
0
 async def test_completion_candidates(self, mock_candidates):
     mock_candidates.setting_names.return_value = Candidates(
         ('a', 'b', 'c'))
     await self.assert_completion_candidates(ResetCmd,
                                             Args(('reset', 'hey', 'ho'),
                                                  curarg_index=2),
                                             exp_cands=('a', 'b', 'c'))
     mock_candidates.setting_names.assert_called_once_with()
Esempio n. 19
0
    async def test_TUI_completion_candidates_for_posargs_with_two_args_on_second_arg(self, mock_fs_path, mock_torrent_filter):
        from stig.commands.tui import MoveTorrentsCmd
        mock_fs_path.return_value = Candidates(('d', 'e', 'f'))
        self.remotecfg['path.complete'] = '/some/path/'

        cands = await MoveTorrentsCmd.completion_candidates(Args(('move', 'foo', 'bar'), curarg_index=2))
        mock_torrent_filter.assert_not_called()
        mock_fs_path.assert_called_once_with('bar', base=self.remotecfg['path.complete'], directories_only=True)
        self.assertEqual(cands, Candidates(('d', 'e', 'f')))
Esempio n. 20
0
 async def test_completion_candidates_on_any_other_argument(
         self, mock_candidates):
     mock_candidates.fs_path.return_value = Candidates(
         ('foo', 'bar', 'baz'))
     await self.assert_completion_candidates(RcCmd,
                                             Args(('rc', 'hey', 'ho'),
                                                  curarg_index=2),
                                             exp_cands=None)
     mock_candidates.fs_path.assert_not_called()
Esempio n. 21
0
 async def test_completion_candidates__subcmd_options(
         self, mock_commands, mock_for_args):
     mock_for_args.return_value = Candidates(('--foo', '--bar', '--baz'))
     for args, i1, i2 in ((('bind', 'alt-x', 'a', '-b', 'c'), 3,
                           1), (('bind', 'alt-x', 'a', '-b', 'c'), 4,
                                2), (('bind', '-c', 'foo', 'alt-x', 'a',
                                      '-b', 'c'), 5, 1),
                          (('bind', '-d', 'bar', 'alt-x', 'a', '-b', 'c'),
                           6, 2), (('bind', '-c', 'foo', '-d', 'bar',
                                    'alt-x', 'a', '-b', 'c'), 7,
                                   1), (('bind', '-c', 'foo', '-d', 'bar',
                                         'alt-x', 'a', '-b', 'c'), 8, 2)):
         await self.assert_completion_candidates(
             BindCmd,
             Args(args, curarg_index=i1),
             exp_cands=('--foo', '--bar', '--baz'))
         mock_for_args.assert_called_with(
             Args(('a', '-b', 'c'), curarg_index=i2, curarg_curpos=0))
         mock_commands.assert_not_called()
Esempio n. 22
0
 def test_unknown_setting(self, mock_rcfg, mock_lcfg):
     mock_lcfg.__iter__.return_value = ('foo', 'bar', 'baz')
     mock_rcfg.__iter__.return_value = ('Foo', 'Bar', 'Baz')
     for args in (('foo', 'bar', 'baz'),
                  ('foo', 'bar', 'baz'),
                  ('foo', 'bar', 'baz')):
         for curarg_index in (0, 1, 2):
             for curarg_curpos in (0, 1, 2, 3):
                 cmdline = Args(args, curarg_index=curarg_index, curarg_curpos=curarg_curpos)
                 self.assertFalse(candidates.setting_values(cmdline))
Esempio n. 23
0
 async def test_completion_candidates__own_options(
         self, mock_completion_candidates_opts, mock_commands,
         mock_for_args):
     mock_completion_candidates_opts.return_value = Candidates(
         ('--context', '--description'))
     for args in (Args(('bind', '-c', 'foo', 'alt-x', 'a', '-b', 'c'),
                       curarg_index=1),
                  Args(('bind', '-d', 'bar', 'alt-x', 'a', '-b', 'c'),
                       curarg_index=1),
                  Args(('bind', '-c', 'foo', '-d', 'bar', 'alt-x', 'a',
                        '-b', 'c'),
                       curarg_index=3),
                  Args(('bind', '-c', 'foo', 'alt-x', '-d', 'bar', 'a',
                        '-b', 'c'),
                       curarg_index=4)):
         await self.assert_completion_candidates(
             BindCmd, args, exp_cands=('--context', '--description'))
         mock_completion_candidates_opts.assert_called_with(args)
         mock_for_args.assert_not_called()
         mock_commands.assert_not_called()
Esempio n. 24
0
 def test_setting_is_a_Tuple(self, mock_rcfg, mock_lcfg):
     for mock_cfg,setting_name in ((mock_lcfg, 'foo'),
                                   (mock_rcfg, 'srv.foo')):
         mock_cfg.__iter__.return_value = (setting_name,)
         mock_cfg.__contains__.return_value = True
         mock_cfg.__getitem__.return_value = usertypes.Tuple('a', 'b', options=('a', 'b', 'c'))
         for i in (1, 2, 3):
             cmdline = Args((setting_name, '_', '_', '_'), curarg_index=i, curarg_curpos=0)
             cands = candidates.setting_values(cmdline)
             exp_cands = Candidates(('a', 'b', 'c'), label='%s options' % setting_name, curarg_seps=(',',))
             self.assertEqual(cands, exp_cands)
Esempio n. 25
0
 async def test_no_completion_candidates_for_settings_or_names_with_option_given(
         self, mock_candidates):
     mock_candidates.setting_names.return_value = Candidates(('foo', 'bar'))
     mock_candidates.setting_values.return_value = Candidates(
         ('a', 'b', 'c'))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', '--sort', 'foo', '_'), curarg_index=3),
         exp_cands=None)
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', '_', '--sort', 'foo'), curarg_index=1),
         exp_cands=None)
     await self.assert_completion_candidates(SetCmd,
                                             Args(('set', '-c', 'foo', '_'),
                                                  curarg_index=3),
                                             exp_cands=None)
     await self.assert_completion_candidates(SetCmd,
                                             Args(('set', '_', '-c'),
                                                  curarg_index=1),
                                             exp_cands=None)
Esempio n. 26
0
 async def test_completion_candidates_for_options_or_setting_names(
         self, mock_candidates):
     mock_candidates.setting_names.return_value = Candidates(
         ('mock settings', ))
     mock_candidates.setting_values.return_value = Candidates(
         ('mock values', ))
     await self.assert_completion_candidates(
         SetCmd,
         Args(('set', '-'), curarg_index=1, curarg_curpos=1),
         exp_cands=(('--columns', '--sort'), ('mock settings', )))
     await self.assert_completion_candidates(SetCmd,
                                             Args(('set', 'foo', '-'),
                                                  curarg_index=2,
                                                  curarg_curpos=1),
                                             exp_cands=('mock values', ))
     await self.assert_completion_candidates(SetCmd,
                                             Args(
                                                 ('set', 'foo', '-', 'bar'),
                                                 curarg_index=3,
                                                 curarg_curpos=2),
                                             exp_cands=('mock values', ))
Esempio n. 27
0
 async def test_completion_candidates_torrent_filter(self, mock_candidates):
     mock_candidates.torrent_filter.return_value = Candidates(
         ('a', 'b', 'c'))
     await self.assert_completion_candidates(
         RateLimitCmd,
         Args(('ratelimit', 'up', '10MB', '_'), curarg_index=3),
         exp_cands=('a', 'b', 'c'))
     await self.assert_completion_candidates(
         RateLimitCmd,
         Args(('ratelimit', 'up', '10MB', '_', '_'), curarg_index=4),
         exp_cands=('a', 'b', 'c'))
     await self.assert_completion_candidates(
         RateLimitCmd,
         Args(('ratelimit', 'up', '10MB', '_', '_'), curarg_index=3),
         exp_cands=('a', 'b', 'c'))
     await self.assert_completion_candidates(
         RateLimitCmd,
         Args(('ratelimit', '-q', 'up', '10MB', '_', '_'), curarg_index=4),
         exp_cands=('a', 'b', 'c'))
     await self.assert_completion_candidates(
         RateLimitCmd,
         Args(('ratelimit', 'up', '-q', '10MB', '_', '_'), curarg_index=5),
         exp_cands=('a', 'b', 'c'))
     await self.assert_completion_candidates(
         RateLimitCmd,
         Args(('ratelimit', 'up', '10MB', '-q', '_', '_'), curarg_index=4),
         exp_cands=('a', 'b', 'c'))
Esempio n. 28
0
 async def test_no_completion_candidates_if_sort_or_columns_options_given(
         self):
     for opt in ('--columns', '--sort'):
         await self.assert_completion_candidates(
             SetCmd,
             Args(('set', opt, 'name', '_', '_'), curarg_index=3),
             exp_cands=None)
         await self.assert_completion_candidates(
             SetCmd,
             Args(('set', opt, 'name', '_', '_'), curarg_index=4),
             exp_cands=None)
         await self.assert_completion_candidates(
             SetCmd,
             Args(('set', '_', opt, 'name', '_'), curarg_index=1),
             exp_cands=None)
         await self.assert_completion_candidates(
             SetCmd,
             Args(('set', '_', opt, 'name', '_'), curarg_index=4),
             exp_cands=None)
         await self.assert_completion_candidates(
             SetCmd,
             Args(('set', '_', '_', opt, 'name'), curarg_index=1),
             exp_cands=None)
         await self.assert_completion_candidates(
             SetCmd,
             Args(('set', '_', '_', opt, 'name'), curarg_index=2),
             exp_cands=None)
Esempio n. 29
0
 def test_setting_is_a_Path(self, mock_fs_path, mock_isdir, mock_rcfg, mock_lcfg):
     for mock_cfg,setting_name in ((mock_lcfg, 'foo'),
                                   (mock_rcfg, 'srv.foo')):
         for mocking_directory in (True, False):
             mock_isdir.return_value = mocking_directory
             mock_cfg.__iter__.return_value = (setting_name,)
             mock_cfg.__contains__.return_value = True
             mock_cfg.__getitem__.return_value = usertypes.Path('mock/path', base='/mockbase/')
             cmdline = Args((setting_name, 'abcdef'), curarg_index=1, curarg_curpos=3)
             candidates.setting_values(cmdline)
             mock_isdir.assert_called_with('mock/path')
             mock_fs_path.assert_called_with('abc', base='/mockbase/',
                                             directories_only=mocking_directory)
Esempio n. 30
0
 async def test_single_file_in_torrent(self, mock_torrents,
                                       mock_find_subtree):
     mock_find_subtree.return_value = None
     mock_torrent_list = [{'name': 'Mock Torrent', 'files': MagicMock()}]
     mock_torrents.return_value = SimpleNamespace(
         success=True, torrents=mock_torrent_list)
     cands = await candidates.torrent_path(Arg('id=foo/a/b/c', curpos=10))
     self.assert_no_candidates(cands)
     mock_torrents.assert_called_once_with('id=foo',
                                           keys=('files', ),
                                           from_cache=True)
     mock_find_subtree.assert_called_once_with(
         mock_torrent_list[0],
         Args(('a', 'b'), curarg_index=1, curarg_curpos=1))