mirror of
https://github.com/nvbn/thefuck.git
synced 2025-02-21 04:18:55 +00:00
Merge branch 'master' of https://github.com/ds-forks/thefuck into ds-forks-master
This commit is contained in:
commit
c2b597f22b
@ -203,6 +203,7 @@ using the matched rule and runs it. Rules enabled by default are as follows:
|
||||
* `has_exists_script` – prepends `./` when script/binary exists;
|
||||
* `heroku_not_command` – fixes wrong `heroku` commands like `heroku log`;
|
||||
* `history` – tries to replace command with most similar command from history;
|
||||
* `hostscli` – tries to fix `hostscli` usage;
|
||||
* `ifconfig_device_not_found` – fixes wrong device names like `wlan0` to `wlp2s0`;
|
||||
* `java` – removes `.java` extension when running Java programs;
|
||||
* `javac` – appends missing `.java` when compiling Java files;
|
||||
|
31
tests/rules/test_hostscli.py
Normal file
31
tests/rules/test_hostscli.py
Normal file
@ -0,0 +1,31 @@
|
||||
import pytest
|
||||
from thefuck.rules.hostscli import no_website, get_new_command, match
|
||||
from tests.utils import Command
|
||||
|
||||
|
||||
no_website_long = '''
|
||||
%s:
|
||||
|
||||
No Domain list found for website: a_website_that_does_not_exist
|
||||
|
||||
Please raise a Issue here: https://github.com/dhilipsiva/hostscli/issues/new
|
||||
if you think we should add domains for this website.
|
||||
|
||||
type `hostscli websites` to see a list of websites that you can block/unblock
|
||||
''' % no_website
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command', [
|
||||
Command(
|
||||
'sudo hostscli block a_website_that_does_not_exist',
|
||||
stderr=no_website_long)])
|
||||
def test_match(command):
|
||||
assert match(command)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command, result', [(
|
||||
Command(
|
||||
'sudo hostscli block a_website_that_does_not_exist',
|
||||
stderr=no_website_long), ['hostscli websites'])])
|
||||
def test_get_new_command(command, result):
|
||||
assert get_new_command(command) == result
|
23
thefuck/rules/hostscli.py
Normal file
23
thefuck/rules/hostscli.py
Normal file
@ -0,0 +1,23 @@
|
||||
import re
|
||||
|
||||
from thefuck.utils import replace_command
|
||||
|
||||
no_command = "Error: No such command"
|
||||
no_website = "hostscli.errors.WebsiteImportError"
|
||||
|
||||
|
||||
def match(command):
|
||||
errors = [no_command, no_website]
|
||||
for error in errors:
|
||||
if error in command.stderr:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def get_new_command(command):
|
||||
if no_website in command.stderr:
|
||||
return ['hostscli websites']
|
||||
misspelled_command = re.findall(
|
||||
r'Error: No such command ".*"', command.stderr)[0]
|
||||
commands = ['block', 'unblock', 'websites', 'block_all', 'unblock_all']
|
||||
return replace_command(command, misspelled_command, commands)
|
@ -20,7 +20,8 @@ patterns = ['permission denied',
|
||||
'authentication is required',
|
||||
'edspermissionerror',
|
||||
'you don\'t have write permissions',
|
||||
'use `sudo`']
|
||||
'use `sudo`',
|
||||
'SudoRequiredError']
|
||||
|
||||
|
||||
def match(command):
|
||||
|
Loading…
x
Reference in New Issue
Block a user