1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-02-21 04:18:55 +00:00
This commit is contained in:
dhilipsiva 2017-02-05 14:50:36 +05:30
parent 28a0150e45
commit 55dcf06569
No known key found for this signature in database
GPG Key ID: D3A33A90ADCDC5BF
2 changed files with 102 additions and 0 deletions

View 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
View 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']