mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-19 04:21:14 +00:00
#132 Merge pip_install_sudo
rule with sudo
rule
This commit is contained in:
parent
4be60c78fa
commit
99d9c9aff7
@ -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'
|
|
@ -3,12 +3,14 @@ from thefuck.rules.sudo import match, get_new_command
|
|||||||
from tests.utils import Command
|
from tests.utils import Command
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('stderr', ['Permission denied',
|
@pytest.mark.parametrize('stderr, stdout', [
|
||||||
'permission denied',
|
('Permission denied', ''),
|
||||||
"npm ERR! Error: EACCES, unlink",
|
('permission denied', ''),
|
||||||
'requested operation requires superuser privilege'])
|
("npm ERR! Error: EACCES, unlink", ''),
|
||||||
def test_match(stderr):
|
('requested operation requires superuser privilege', ''),
|
||||||
assert match(Command(stderr=stderr), None)
|
('', "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():
|
def test_not_match():
|
||||||
|
@ -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)
|
|
@ -13,7 +13,8 @@ patterns = ['permission denied',
|
|||||||
|
|
||||||
def match(command, settings):
|
def match(command, settings):
|
||||||
for pattern in patterns:
|
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 True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user