diff --git a/tests/rules/test_pacman.py b/tests/rules/test_pacman.py index 8d719cd..b9742e7 100644 --- a/tests/rules/test_pacman.py +++ b/tests/rules/test_pacman.py @@ -7,6 +7,18 @@ from tests.utils import Command pacman_cmd = getattr(pacman, 'pacman', 'pacman') +PKGFILE_OUTPUT_CONVERT = ''' +extra/imagemagick 6.9.1.0-1\t/usr/bin/convert +''' + +PKGFILE_OUTPUT_VIM = ''' +extra/gvim 7.4.712-1 \t/usr/bin/vim +extra/gvim-python3 7.4.712-1\t/usr/bin/vim +extra/vim 7.4.712-1 \t/usr/bin/vim +extra/vim-minimal 7.4.712-1 \t/usr/bin/vim +extra/vim-python3 7.4.712-1 \t/usr/bin/vim +''' + @pytest.mark.skipif(not getattr(pacman, 'enabled_by_default', True), reason='Skip if pacman is not available') @@ -17,7 +29,7 @@ def test_match(command): @pytest.mark.parametrize('command, return_value', [ - (Command(script='vim', stderr='vim: command not found'), 'vim foo bar')]) + (Command(script='vim', stderr='vim: command not found'), PKGFILE_OUTPUT_VIM)]) @patch('thefuck.rules.pacman.subprocess') @patch.multiple(pacman, create=True, pacman=pacman_cmd) def test_match_mocked(subp_mock, command, return_value): @@ -35,16 +47,17 @@ def test_not_match(command): @pytest.mark.skipif(not getattr(pacman, 'enabled_by_default', True), reason='Skip if pacman is not available') @pytest.mark.parametrize('command, new_command', [ - (Command('vim'), '{} -S vim && vim'.format(pacman_cmd)), - (Command('convert'), '{} -S imagemagick && convert'.format(pacman_cmd))]) + (Command('vim'), '{} -S extra/gvim && vim'.format(pacman_cmd)), + (Command('convert'), '{} -S extra/imagemagick && convert'.format(pacman_cmd))]) def test_get_new_command(command, new_command, mocker): assert get_new_command(command, None) == new_command @pytest.mark.parametrize('command, new_command, return_value', [ - (Command('vim'), '{} -S vim && vim'.format(pacman_cmd), 'vim foo bar'), - (Command('convert'), '{} -S imagemagick && convert'.format(pacman_cmd), - 'imagemagick foo bar')]) + (Command('vim'), '{} -S extra/gvim && vim'.format(pacman_cmd), + PKGFILE_OUTPUT_VIM), + (Command('convert'), '{} -S extra/imagemagick && convert'.format(pacman_cmd), + PKGFILE_OUTPUT_CONVERT)]) @patch('thefuck.rules.pacman.subprocess') @patch.multiple(pacman, create=True, pacman=pacman_cmd) def test_get_new_command_mocked(subp_mock, command, new_command, return_value): diff --git a/thefuck/rules/pacman.py b/thefuck/rules/pacman.py index 2ec507e..08a39ec 100644 --- a/thefuck/rules/pacman.py +++ b/thefuck/rules/pacman.py @@ -1,17 +1,6 @@ import subprocess +from thefuck.utils import DEVNULL, which from thefuck import shells -from thefuck.utils import DEVNULL - - -def __command_available(command): - try: - subprocess.check_output([command], stderr=DEVNULL) - return True - except subprocess.CalledProcessError: - # command exists but is not happy to be called without any argument - return True - except OSError: - return False def __get_pkgfile(command): @@ -35,11 +24,11 @@ def get_new_command(command, settings): return formatme.format(pacman, package, command.script) -if not __command_available('pkgfile'): +if not which('pkgfile'): enabled_by_default = False -elif __command_available('yaourt'): +elif which('yaourt'): pacman = 'yaourt' -elif __command_available('pacman'): +elif which('pacman'): pacman = 'sudo pacman' else: enabled_by_default = False