From 5f2b2433b15ca3941a75bc57c45637a5e7f5edce Mon Sep 17 00:00:00 2001 From: mcarton Date: Sat, 16 May 2015 15:25:32 +0200 Subject: [PATCH 1/2] Cleanup `pacman` rule --- thefuck/rules/pacman.py | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/thefuck/rules/pacman.py b/thefuck/rules/pacman.py index 71c6e698..12fa9430 100644 --- a/thefuck/rules/pacman.py +++ b/thefuck/rules/pacman.py @@ -1,16 +1,5 @@ import subprocess -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 +from thefuck.utils import DEVNULL, which def __get_pkgfile(command): @@ -33,11 +22,11 @@ def get_new_command(command, settings): return '{} -S {} && {}'.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 From afcee5844bee3b13c5d1c70bd9d5c7df1081fcc9 Mon Sep 17 00:00:00 2001 From: mcarton Date: Sun, 17 May 2015 20:35:06 +0200 Subject: [PATCH 2/2] Fix pacman tests on Arch Linux --- tests/rules/test_pacman.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/tests/rules/test_pacman.py b/tests/rules/test_pacman.py index 8d719cd6..b9742e7f 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):