mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 15:12:20 +00:00 
			
		
		
		
	Hostscli
This commit is contained in:
		
							
								
								
									
										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'] | ||||||
		Reference in New Issue
	
	Block a user