mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 07:04:12 +00:00 
			
		
		
		
	#N/A Add gulp_not_task rule
				
					
				
			This commit is contained in:
		| @@ -158,6 +158,7 @@ using the matched rule and runs it. Rules enabled by default are as follows: | ||||
| * `git_stash` – stashes you local modifications before rebasing or switching branch; | ||||
| * `go_run` – appends `.go` extension when compiling/running Go programs | ||||
| * `grep_recursive` – adds `-r` when you trying to `grep` directory; | ||||
| * `gulp_not_task` – fixes misspelled gulp tasks; | ||||
| * `has_exists_script` – prepends `./` when script/binary exists; | ||||
| * `heroku_no_command` – fixes wrong `heroku` commands like `heroku log`; | ||||
| * `history` – tries to replace command with most similar command from history; | ||||
|   | ||||
							
								
								
									
										28
									
								
								tests/rules/test_gulp_not_task.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								tests/rules/test_gulp_not_task.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| import pytest | ||||
| from tests.utils import Command | ||||
| from thefuck.rules.gulp_not_task import match, get_new_command | ||||
|  | ||||
|  | ||||
| def stdout(task): | ||||
|     return '''[00:41:11] Using gulpfile gulpfile.js | ||||
| [00:41:11] Task '{}' is not in your gulpfile | ||||
| [00:41:11] Please check the documentation for proper gulpfile formatting | ||||
| '''.format(task) | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('gulp srve', stdout('srve')), None) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script, stdout', [ | ||||
|     ('gulp serve', ''), | ||||
|     ('cat srve', stdout('srve'))]) | ||||
| def test_not_march(script, stdout): | ||||
|     assert not match(Command(script, stdout), None) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(mocker): | ||||
|     mocker.patch('thefuck.rules.gulp_not_task.get_gulp_tasks', return_value=[ | ||||
|         'serve', 'build', 'default']) | ||||
|     command = Command('gulp srve', stdout('srve')) | ||||
|     assert get_new_command(command, None) == 'gulp serve' | ||||
							
								
								
									
										22
									
								
								thefuck/rules/gulp_not_task.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								thefuck/rules/gulp_not_task.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| import re | ||||
| import subprocess | ||||
| from thefuck.utils import get_closest, replace_argument | ||||
|  | ||||
|  | ||||
| def match(command, script): | ||||
|     return command.script.startswith('gulp')\ | ||||
|         and 'is not in your gulpfile' in command.stdout | ||||
|  | ||||
|  | ||||
| def get_gulp_tasks(): | ||||
|     proc = subprocess.Popen(['gulp', '--tasks-simple'], | ||||
|                             stdout=subprocess.PIPE) | ||||
|     return [line.decode('utf-8')[:-1] | ||||
|             for line in proc.stdout.readlines()] | ||||
|  | ||||
|  | ||||
| def get_new_command(command, script): | ||||
|     wrong_task = re.findall(r"Task '(\w+)' is not in your gulpfile", | ||||
|                             command.stdout)[0] | ||||
|     fixed_task = get_closest(wrong_task, get_gulp_tasks()) | ||||
|     return replace_argument(command.script, wrong_task, fixed_task) | ||||
		Reference in New Issue
	
	Block a user