mirror of
https://github.com/nvbn/thefuck.git
synced 2025-03-13 22:28:33 +00:00
Merge branch 'ds-forks-master'
This commit is contained in:
commit
73b884df5f
@ -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;
|
||||
|
29
tests/rules/test_hostscli.py
Normal file
29
tests/rules/test_hostscli.py
Normal file
@ -0,0 +1,29 @@
|
||||
import pytest
|
||||
from thefuck.rules.hostscli import no_website, get_new_command, match
|
||||
from tests.utils import Command
|
||||
|
||||
no_website_long = '''
|
||||
{}:
|
||||
|
||||
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
|
||||
'''.format(no_website)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command', [
|
||||
Command('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('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
|
27
thefuck/rules/hostscli.py
Normal file
27
thefuck/rules/hostscli.py
Normal file
@ -0,0 +1,27 @@
|
||||
import re
|
||||
from thefuck.specific.sudo import sudo_support
|
||||
from thefuck.utils import replace_command, for_app
|
||||
|
||||
no_command = "Error: No such command"
|
||||
no_website = "hostscli.errors.WebsiteImportError"
|
||||
|
||||
|
||||
@sudo_support
|
||||
@for_app('hostscli')
|
||||
def match(command):
|
||||
errors = [no_command, no_website]
|
||||
for error in errors:
|
||||
if error in command.stderr:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
@sudo_support
|
||||
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