mirror of
https://github.com/nvbn/thefuck.git
synced 2025-02-21 04:18:55 +00:00
Hostscli
This commit is contained in:
parent
28a0150e45
commit
55dcf06569
65
tests/rules/test_hostscli.py
Normal file
65
tests/rules/test_hostscli.py
Normal file
@ -0,0 +1,65 @@
|
||||
#! /usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# vim: fenc=utf-8
|
||||
# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
|
||||
#
|
||||
#
|
||||
|
||||
"""
|
||||
File name: test_hostscli.py
|
||||
Author: dhilipsiva <dhilipsiva@gmail.com>
|
||||
Date created: 2017-02-05
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from thefuck.rules.hostscli import no_command, need_sudo, no_website, \
|
||||
match, get_new_command
|
||||
from tests.utils import Command
|
||||
|
||||
|
||||
no_command = '''
|
||||
Usage: hostscli [OPTIONS] COMMAND [ARGS]...
|
||||
|
||||
%s "invalid".
|
||||
''' % no_command
|
||||
|
||||
need_sudo = '''
|
||||
%s:
|
||||
|
||||
"sudo" permissions are required to run this command.
|
||||
|
||||
Please run the last command again with sudo
|
||||
''' % need_sudo
|
||||
|
||||
|
||||
no_website = '''
|
||||
%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('hostscli invalid', stderr=no_command)])
|
||||
def test_match(command):
|
||||
assert match(command)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('command, result', [
|
||||
(Command(
|
||||
'hostscli invalid', stderr=no_command), ['hostscli --help']),
|
||||
(Command(
|
||||
'hostscli block test', stderr=need_sudo),
|
||||
['sudo hostscli block test']),
|
||||
(Command(
|
||||
'sudo hostscli block a_website_that_does_not_exist',
|
||||
stderr=no_website),
|
||||
['hostscli websites'])])
|
||||
def test_get_new_command(command, result):
|
||||
assert get_new_command(command) == result
|
37
thefuck/rules/hostscli.py
Normal file
37
thefuck/rules/hostscli.py
Normal file
@ -0,0 +1,37 @@
|
||||
#! /usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# vim: fenc=utf-8
|
||||
# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
|
||||
#
|
||||
#
|
||||
|
||||
"""
|
||||
File name: hostscli.py
|
||||
Author: dhilipsiva <dhilipsiva@gmail.com>
|
||||
Date created: 2017-02-05
|
||||
"""
|
||||
|
||||
from thefuck.utils import for_app
|
||||
|
||||
no_command = "Error: No such command"
|
||||
need_sudo = "hostscli.errors.SudoRequiredError"
|
||||
no_website = "hostscli.errors.WebsiteImportError"
|
||||
|
||||
|
||||
@for_app("hostscli")
|
||||
def match(command):
|
||||
errors = [no_command, need_sudo, 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']
|
||||
if need_sudo in command.stderr:
|
||||
return ['sudo {}'.format(command.script)]
|
||||
if no_command in command.stderr:
|
||||
return ['hostscli --help']
|
Loading…
x
Reference in New Issue
Block a user