1
0
mirror of https://github.com/nvbn/thefuck.git synced 2024-10-05 18:31:10 +01:00

#N/A Add gulp_not_task rule

This commit is contained in:
nvbn 2015-07-24 00:47:57 +03:00
parent 469c5a60b0
commit b15bc8c423
3 changed files with 51 additions and 0 deletions

View File

@ -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;

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

View 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)