diff --git a/tests/rules/test_apt_get.py b/tests/rules/test_apt_get.py index f0362795..81ae5e0d 100644 --- a/tests/rules/test_apt_get.py +++ b/tests/rules/test_apt_get.py @@ -29,12 +29,27 @@ def test_match_mocked(cmdnf_mock, command, return_value): assert get_packages.called +# python-commandnotfound is available in ubuntu 14.04+ +@pytest.mark.skipif(not getattr(apt_get, 'enabled_by_default', True), + reason='Skip if python-commandnotfound is not available') @pytest.mark.parametrize('command', [ + Command(script='a_bad_cmd', stderr='a_bad_cmd: command not found'), Command(script='vim', stderr=''), Command()]) def test_not_match(command): assert not match(command) +@pytest.mark.parametrize('command, return_value', [ + (Command(script='a_bad_cmd', stderr='a_bad_cmd: command not found'), []), + (Command(script='vim', stderr=''), []), (Command(), [])]) +@patch('thefuck.rules.apt_get.CommandNotFound', create=True) +@patch.multiple(apt_get, create=True, apt_get='apt_get') +def test_not_match_mocked(cmdnf_mock, command, return_value): + get_packages = Mock(return_value=return_value) + cmdnf_mock.CommandNotFound.return_value = Mock(getPackages=get_packages) + assert not match(command) + + # python-commandnotfound is available in ubuntu 14.04+ @pytest.mark.skipif(not getattr(apt_get, 'enabled_by_default', True), reason='Skip if python-commandnotfound is not available') diff --git a/tests/rules/test_git_checkout.py b/tests/rules/test_git_checkout.py index e4381cdb..13212d7d 100644 --- a/tests/rules/test_git_checkout.py +++ b/tests/rules/test_git_checkout.py @@ -1,5 +1,6 @@ import pytest -from thefuck.rules.git_checkout import match, get_new_command +from io import BytesIO +from thefuck.rules.git_checkout import match, get_branches, get_new_command from tests.utils import Command @@ -13,8 +14,10 @@ def did_not_match(target, did_you_forget=False): @pytest.fixture -def get_branches(mocker): - return mocker.patch('thefuck.rules.git_checkout.get_branches') +def git_branch(mocker, branches): + mock = mocker.patch('subprocess.Popen') + mock.return_value.stdout = BytesIO(branches) + return mock @pytest.mark.parametrize('command', [ @@ -33,21 +36,34 @@ def test_not_match(command): assert not match(command) +@pytest.mark.parametrize('branches, branch_list', [ + (b'', []), + (b'* master', ['master']), + (b' remotes/origin/master', ['master']), + (b' just-another-branch', ['just-another-branch']), + (b'* master\n just-another-branch', ['master', 'just-another-branch']), + (b'* master\n remotes/origin/master\n just-another-branch', + ['master', 'master', 'just-another-branch'])]) +def test_get_branches(branches, branch_list, git_branch): + git_branch(branches) + assert list(get_branches()) == branch_list + + @pytest.mark.parametrize('branches, command, new_command', [ - ([], + (b'', Command(script='git checkout unknown', stderr=did_not_match('unknown')), 'git branch unknown && git checkout unknown'), - ([], + (b'', Command('git commit unknown', stderr=did_not_match('unknown')), 'git branch unknown && git commit unknown'), - (['test-random-branch-123'], + (b' test-random-branch-123', Command(script='git checkout tst-rdm-brnch-123', stderr=did_not_match('tst-rdm-brnch-123')), 'git checkout test-random-branch-123'), - (['test-random-branch-123'], + (b' test-random-branch-123', Command(script='git commit tst-rdm-brnch-123', stderr=did_not_match('tst-rdm-brnch-123')), 'git commit test-random-branch-123')]) -def test_get_new_command(branches, command, new_command, get_branches): - get_branches.return_value = branches +def test_get_new_command(branches, command, new_command, git_branch): + git_branch(branches) assert get_new_command(command) == new_command diff --git a/tests/rules/test_gulp_not_task.py b/tests/rules/test_gulp_not_task.py index cf76750f..6a7106c3 100644 --- a/tests/rules/test_gulp_not_task.py +++ b/tests/rules/test_gulp_not_task.py @@ -1,4 +1,5 @@ import pytest +from io import BytesIO from tests.utils import Command from thefuck.rules.gulp_not_task import match, get_new_command @@ -22,7 +23,7 @@ def test_not_march(script, stdout): def test_get_new_command(mocker): - mocker.patch('thefuck.rules.gulp_not_task.get_gulp_tasks', return_value=[ - 'serve', 'build', 'default']) + mock = mocker.patch('subprocess.Popen') + mock.return_value.stdout = BytesIO(b'serve \nbuild \ndefault \n') command = Command('gulp srve', stdout('srve')) assert get_new_command(command) == ['gulp serve', 'gulp default']