mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-30 22:54:14 +00:00 
			
		
		
		
	#977: Add wrong_hyphen_before_subcommand rule
				
					
				
			Co-authored-by: user <avi.salmon@intel.com> Co-authored-by: Pablo Santiago Blum de Aguiar <scorphus@gmail.com>
This commit is contained in:
		| @@ -336,6 +336,7 @@ following rules are enabled by default: | ||||
| * `vagrant_up` – starts up the vagrant instance; | ||||
| * `whois` – fixes `whois` command; | ||||
| * `workon_doesnt_exists` – fixes `virtualenvwrapper` env name os suggests to create new. | ||||
| * `wrong_hyphen_before_subcommand` – removes an improperly placed hyphen (`apt-install` -> `apt install`, `git-log` -> `git log`, etc.) | ||||
| * `yarn_alias` – fixes aliased `yarn` commands like `yarn ls`; | ||||
| * `yarn_command_not_found` – fixes misspelled `yarn` commands; | ||||
| * `yarn_command_replaced` – fixes replaced `yarn` commands; | ||||
|   | ||||
							
								
								
									
										30
									
								
								tests/rules/test_wrong_hyphen_before_subcommand.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								tests/rules/test_wrong_hyphen_before_subcommand.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| import pytest | ||||
|  | ||||
| from thefuck.rules.wrong_hyphen_before_subcommand import match, get_new_command | ||||
| from thefuck.types import Command | ||||
|  | ||||
|  | ||||
| @pytest.fixture(autouse=True) | ||||
| def get_all_executables(mocker): | ||||
|     mocker.patch( | ||||
|         "thefuck.rules.wrong_hyphen_before_subcommand.get_all_executables", | ||||
|         return_value=["git", "apt", "apt-get", "ls", "pwd"], | ||||
|     ) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize("script", ["git-log", "apt-install python"]) | ||||
| def test_match(script): | ||||
|     assert match(Command(script, "")) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize("script", ["ls -la", "git2-make", "apt-get install python"]) | ||||
| def test_not_match(script): | ||||
|     assert not match(Command(script, "")) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize( | ||||
|     "script, new_command", | ||||
|     [("git-log", "git log"), ("apt-install python", "apt install python")], | ||||
| ) | ||||
| def test_get_new_command(script, new_command): | ||||
|     assert get_new_command(Command(script, "")) == new_command | ||||
							
								
								
									
										20
									
								
								thefuck/rules/wrong_hyphen_before_subcommand.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								thefuck/rules/wrong_hyphen_before_subcommand.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| from thefuck.utils import get_all_executables | ||||
| from thefuck.specific.sudo import sudo_support | ||||
|  | ||||
|  | ||||
| @sudo_support | ||||
| def match(command): | ||||
|     first_part = command.script_parts[0] | ||||
|     if "-" not in first_part or first_part in get_all_executables(): | ||||
|         return False | ||||
|     cmd, _ = first_part.split("-", 1) | ||||
|     return cmd in get_all_executables() | ||||
|  | ||||
|  | ||||
| @sudo_support | ||||
| def get_new_command(command): | ||||
|     return command.script.replace("-", " ", 1) | ||||
|  | ||||
|  | ||||
| priority = 4500 | ||||
| requires_output = False | ||||
		Reference in New Issue
	
	Block a user