From 99d9c9aff7fde129279a6a4ee58cb1e6df109e34 Mon Sep 17 00:00:00 2001 From: nvbn Date: Wed, 29 Apr 2015 05:01:30 +0200 Subject: [PATCH] #132 Merge `pip_install_sudo` rule with `sudo` rule --- tests/rules/test_pip_install_sudo.py | 58 ---------------------------- tests/rules/test_sudo.py | 14 ++++--- thefuck/rules/pip_install_sudo.py | 13 ------- thefuck/rules/sudo.py | 3 +- 4 files changed, 10 insertions(+), 78 deletions(-) delete mode 100644 tests/rules/test_pip_install_sudo.py delete mode 100644 thefuck/rules/pip_install_sudo.py diff --git a/tests/rules/test_pip_install_sudo.py b/tests/rules/test_pip_install_sudo.py deleted file mode 100644 index db4220dc..00000000 --- a/tests/rules/test_pip_install_sudo.py +++ /dev/null @@ -1,58 +0,0 @@ -import pytest -from thefuck.rules.pip_install_sudo import match, get_new_command -from tests.utils import Command - - -@pytest.fixture -def stdout_success(): - return ''' - Collecting thefuck - Downloading thefuck-1.30.tar.gz - Requirement already satisfied (use --upgrade to upgrade): pathlib in /usr/local/lib/python2.7/site-packages/pathlib-1.0.1-py2.7.egg (from thefuck) - Requirement already satisfied (use --upgrade to upgrade): psutil in /usr/local/lib/python2.7/site-packages/psutil-2.2.1-py2.7-macosx-10.10-x86_64.egg (from thefuck) - Requirement already satisfied (use --upgrade to upgrade): colorama in /usr/local/lib/python2.7/site-packages/colorama-0.3.3-py2.7.egg (from thefuck) - Requirement already satisfied (use --upgrade to upgrade): six in /usr/local/lib/python2.7/site-packages (from thefuck) - Installing collected packages: thefuck - Running setup.py install for thefuck - Successfully installed thefuck-1.30 - ''' - - -@pytest.fixture -def stdout(): - return ''' - Collecting ipaddr - Using cached ipaddr-2.1.11.tar.gz - Installing collected packages: ipaddr - Running setup.py install for ipaddr - Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-usOyBh/ipaddr/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ghPfAW-record/install-record.txt --single-version-externally-managed --compile: - running install - running build - running build_py - creating build - creating build/lib.linux-x86_64-2.7 - copying ipaddr.py -> build/lib.linux-x86_64-2.7 - running install_lib - copying build/lib.linux-x86_64-2.7/ipaddr.py -> /usr/local/lib/python2.7/dist-packages - error: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/ipaddr.py' - ''' - - -@pytest.fixture -def stderr(): - return ''' - Command "/usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-usOyBh/ipaddr/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-ghPfAW-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-usOyBh/ipaddr - ''' - - -def test_match(stdout, stdout_success, stderr): - assert match(Command('pip install ipaddr', stdout=stdout, stderr=stderr), - None) - assert not match(Command('pip install thefuck', stdout=stdout_success), - None) - - -def test_get_new_command(stdout, stdout_success, stderr): - assert get_new_command(Command('pip install ipaddr', stdout=stdout, - stderr=stderr), None)\ - == 'sudo pip install ipaddr' diff --git a/tests/rules/test_sudo.py b/tests/rules/test_sudo.py index 9d773920..7c48d912 100644 --- a/tests/rules/test_sudo.py +++ b/tests/rules/test_sudo.py @@ -3,12 +3,14 @@ from thefuck.rules.sudo import match, get_new_command from tests.utils import Command -@pytest.mark.parametrize('stderr', ['Permission denied', - 'permission denied', - "npm ERR! Error: EACCES, unlink", - 'requested operation requires superuser privilege']) -def test_match(stderr): - assert match(Command(stderr=stderr), None) +@pytest.mark.parametrize('stderr, stdout', [ + ('Permission denied', ''), + ('permission denied', ''), + ("npm ERR! Error: EACCES, unlink", ''), + ('requested operation requires superuser privilege', ''), + ('', "error: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/ipaddr.py'")]) +def test_match(stderr, stdout): + assert match(Command(stderr=stderr, stdout=stdout), None) def test_not_match(): diff --git a/thefuck/rules/pip_install_sudo.py b/thefuck/rules/pip_install_sudo.py deleted file mode 100644 index 0d1e37d9..00000000 --- a/thefuck/rules/pip_install_sudo.py +++ /dev/null @@ -1,13 +0,0 @@ -import re -from thefuck.utils import sudo_support - - -def match(command, settings): - return (('pip' in command.script and 'install' in command.script) and - 'failed with error code 1' in command.stderr and - ('Errno 13' in command.stdout or - 'Permission denied' in command.stdout)) - - -def get_new_command(command, settings): - return u'sudo {}'.format(command.script) diff --git a/thefuck/rules/sudo.py b/thefuck/rules/sudo.py index 26d87ad8..fb0226af 100644 --- a/thefuck/rules/sudo.py +++ b/thefuck/rules/sudo.py @@ -13,7 +13,8 @@ patterns = ['permission denied', def match(command, settings): for pattern in patterns: - if pattern.lower() in command.stderr.lower(): + if pattern.lower() in command.stderr.lower()\ + or pattern.lower() in command.stdout.lower(): return True return False