Remove obscure SortedCorrectedCommandsSequence
This commit is contained in:
+12
-1
@@ -3,7 +3,8 @@ from pathlib import PosixPath, Path
|
||||
from mock import Mock
|
||||
from thefuck import corrector, conf
|
||||
from tests.utils import Rule, Command, CorrectedCommand
|
||||
from thefuck.corrector import make_corrected_commands, get_corrected_commands, is_rule_enabled
|
||||
from thefuck.corrector import make_corrected_commands, get_corrected_commands,\
|
||||
is_rule_enabled, organize_commands
|
||||
|
||||
|
||||
def test_load_rule(mocker):
|
||||
@@ -111,3 +112,13 @@ def test_get_corrected_commands(mocker):
|
||||
mocker.patch('thefuck.corrector.get_rules', return_value=rules)
|
||||
assert [cmd.script for cmd in get_corrected_commands(command)] \
|
||||
== ['test!', 'test@', 'test;']
|
||||
|
||||
|
||||
def test_organize_commands():
|
||||
"""Ensures that the function removes duplicates and sorts commands."""
|
||||
commands = [CorrectedCommand('ls'), CorrectedCommand('ls -la', priority=9000),
|
||||
CorrectedCommand('ls -lh', priority=100),
|
||||
CorrectedCommand('ls -lh', priority=9999)]
|
||||
assert list(organize_commands(iter(commands))) \
|
||||
== [CorrectedCommand('ls'), CorrectedCommand('ls -lh', priority=100),
|
||||
CorrectedCommand('ls -la', priority=9000)]
|
||||
|
||||
@@ -1,37 +1,6 @@
|
||||
from thefuck.types import SortedCorrectedCommandsSequence
|
||||
from tests.utils import CorrectedCommand
|
||||
|
||||
|
||||
class TestSortedCorrectedCommandsSequence(object):
|
||||
def test_realises_generator_only_on_demand(self, settings):
|
||||
should_realise = False
|
||||
|
||||
def gen():
|
||||
yield CorrectedCommand('git commit')
|
||||
yield CorrectedCommand('git branch', priority=200)
|
||||
assert should_realise
|
||||
yield CorrectedCommand('git checkout', priority=100)
|
||||
|
||||
commands = SortedCorrectedCommandsSequence(gen())
|
||||
assert commands[0] == CorrectedCommand('git commit')
|
||||
should_realise = True
|
||||
assert commands[1] == CorrectedCommand('git checkout', priority=100)
|
||||
assert commands[2] == CorrectedCommand('git branch', priority=200)
|
||||
|
||||
def test_remove_duplicates(self):
|
||||
side_effect = lambda *_: None
|
||||
seq = SortedCorrectedCommandsSequence(
|
||||
iter([CorrectedCommand('ls', priority=100),
|
||||
CorrectedCommand('ls', priority=200),
|
||||
CorrectedCommand('ls', side_effect, 300)]))
|
||||
assert set(seq) == {CorrectedCommand('ls', priority=100),
|
||||
CorrectedCommand('ls', side_effect, 300)}
|
||||
|
||||
def test_with_blank(self):
|
||||
seq = SortedCorrectedCommandsSequence(iter([]))
|
||||
assert list(seq) == []
|
||||
|
||||
|
||||
class TestCorrectedCommand(object):
|
||||
|
||||
def test_equality(self):
|
||||
|
||||
+13
-16
@@ -1,10 +1,9 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
from mock import Mock
|
||||
import pytest
|
||||
from itertools import islice
|
||||
from thefuck import ui
|
||||
from thefuck.types import CorrectedCommand, SortedCorrectedCommandsSequence
|
||||
from thefuck.types import CorrectedCommand
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -41,7 +40,7 @@ def test_read_actions(patch_getch):
|
||||
|
||||
|
||||
def test_command_selector():
|
||||
selector = ui.CommandSelector([1, 2, 3])
|
||||
selector = ui.CommandSelector(iter([1, 2, 3]))
|
||||
assert selector.value == 1
|
||||
selector.next()
|
||||
assert selector.value == 2
|
||||
@@ -57,51 +56,49 @@ def test_command_selector():
|
||||
class TestSelectCommand(object):
|
||||
@pytest.fixture
|
||||
def commands_with_side_effect(self):
|
||||
return SortedCorrectedCommandsSequence(
|
||||
iter([CorrectedCommand('ls', lambda *_: None, 100),
|
||||
CorrectedCommand('cd', lambda *_: None, 100)]))
|
||||
return [CorrectedCommand('ls', lambda *_: None, 100),
|
||||
CorrectedCommand('cd', lambda *_: None, 100)]
|
||||
|
||||
@pytest.fixture
|
||||
def commands(self):
|
||||
return SortedCorrectedCommandsSequence(
|
||||
iter([CorrectedCommand('ls', None, 100),
|
||||
CorrectedCommand('cd', None, 100)]))
|
||||
return [CorrectedCommand('ls', None, 100),
|
||||
CorrectedCommand('cd', None, 100)]
|
||||
|
||||
def test_without_commands(self, capsys):
|
||||
assert ui.select_command([]) is None
|
||||
assert ui.select_command(iter([])) is None
|
||||
assert capsys.readouterr() == ('', 'No fucks given\n')
|
||||
|
||||
def test_without_confirmation(self, capsys, commands, settings):
|
||||
settings.require_confirmation = False
|
||||
assert ui.select_command(commands) == commands[0]
|
||||
assert ui.select_command(iter(commands)) == commands[0]
|
||||
assert capsys.readouterr() == ('', 'ls\n')
|
||||
|
||||
def test_without_confirmation_with_side_effects(
|
||||
self, capsys, commands_with_side_effect, settings):
|
||||
settings.require_confirmation = False
|
||||
assert ui.select_command(commands_with_side_effect) \
|
||||
assert ui.select_command(iter(commands_with_side_effect)) \
|
||||
== commands_with_side_effect[0]
|
||||
assert capsys.readouterr() == ('', 'ls (+side effect)\n')
|
||||
|
||||
def test_with_confirmation(self, capsys, patch_getch, commands):
|
||||
patch_getch(['\n'])
|
||||
assert ui.select_command(commands) == commands[0]
|
||||
assert ui.select_command(iter(commands)) == commands[0]
|
||||
assert capsys.readouterr() == ('', u'\x1b[1K\rls [enter/↑/↓/ctrl+c]\n')
|
||||
|
||||
def test_with_confirmation_abort(self, capsys, patch_getch, commands):
|
||||
patch_getch([KeyboardInterrupt])
|
||||
assert ui.select_command(commands) is None
|
||||
assert ui.select_command(iter(commands)) is None
|
||||
assert capsys.readouterr() == ('', u'\x1b[1K\rls [enter/↑/↓/ctrl+c]\nAborted\n')
|
||||
|
||||
def test_with_confirmation_with_side_effct(self, capsys, patch_getch,
|
||||
commands_with_side_effect):
|
||||
patch_getch(['\n'])
|
||||
assert ui.select_command(commands_with_side_effect)\
|
||||
assert ui.select_command(iter(commands_with_side_effect))\
|
||||
== commands_with_side_effect[0]
|
||||
assert capsys.readouterr() == ('', u'\x1b[1K\rls (+side effect) [enter/↑/↓/ctrl+c]\n')
|
||||
|
||||
def test_with_confirmation_select_second(self, capsys, patch_getch, commands):
|
||||
patch_getch(['\x1b', '[', 'B', '\n'])
|
||||
assert ui.select_command(commands) == commands[1]
|
||||
assert ui.select_command(iter(commands)) == commands[1]
|
||||
assert capsys.readouterr() == (
|
||||
'', u'\x1b[1K\rls [enter/↑/↓/ctrl+c]\x1b[1K\rcd [enter/↑/↓/ctrl+c]\n')
|
||||
|
||||
Reference in New Issue
Block a user