Add useful constructors for Rule and Command for tests

This commit is contained in:
nvbn
2015-04-25 02:35:26 +02:00
parent bb6b9a638c
commit b7cb407637
18 changed files with 141 additions and 115 deletions
+10 -10
View File
@@ -1,7 +1,7 @@
import pytest
from thefuck.types import Command
from thefuck.rules.brew_install import match, get_new_command
from thefuck.rules.brew_install import brew_formulas
from tests.utils import Command
@pytest.fixture
@@ -29,21 +29,21 @@ def _is_not_okay_to_test():
reason='No need to run if there\'s no formula')
def test_match(brew_no_available_formula, brew_already_installed,
brew_install_no_argument):
assert match(Command('brew install elsticsearch', '',
brew_no_available_formula), None)
assert not match(Command('brew install git', '',
brew_already_installed), None)
assert not match(Command('brew install', '', brew_install_no_argument),
assert match(Command('brew install elsticsearch',
stderr=brew_no_available_formula), None)
assert not match(Command('brew install git',
stderr=brew_already_installed), None)
assert not match(Command('brew install', stderr=brew_install_no_argument),
None)
@pytest.mark.skipif(_is_not_okay_to_test(),
reason='No need to run if there\'s no formula')
def test_get_new_command(brew_no_available_formula):
assert get_new_command(Command('brew install elsticsearch', '',
brew_no_available_formula), None)\
assert get_new_command(Command('brew install elsticsearch',
stderr=brew_no_available_formula), None)\
== 'brew install elasticsearch'
assert get_new_command(Command('brew install aa', '',
brew_no_available_formula),
assert get_new_command(Command('brew install aa',
stderr=brew_no_available_formula),
None) != 'brew install aha'
+5 -5
View File
@@ -1,7 +1,7 @@
import pytest
from thefuck.types import Command
from thefuck.rules.brew_unknown_command import match, get_new_command
from thefuck.rules.brew_unknown_command import brew_commands
from tests.utils import Command
@pytest.fixture
@@ -15,14 +15,14 @@ def brew_unknown_cmd_instaa():
def test_match(brew_unknown_cmd):
assert match(Command('brew inst', '', brew_unknown_cmd), None)
assert match(Command('brew inst', stderr=brew_unknown_cmd), None)
for command in brew_commands:
assert not match(Command('brew ' + command, '', ''), None)
assert not match(Command('brew ' + command), None)
def test_get_new_command(brew_unknown_cmd, brew_unknown_cmd_instaa):
assert get_new_command(Command('brew inst', '', brew_unknown_cmd), None)\
assert get_new_command(Command('brew inst', stderr=brew_unknown_cmd), None)\
== 'brew list'
assert get_new_command(Command('brew instaa', '', brew_unknown_cmd_instaa),
assert get_new_command(Command('brew instaa', stderr=brew_unknown_cmd_instaa),
None) == 'brew install'
+4 -4
View File
@@ -1,12 +1,12 @@
from thefuck.types import Command
from thefuck.rules.cd_parent import match, get_new_command
from tests.utils import Command
def test_match():
assert match(Command('cd..', '', 'cd..: command not found'), None)
assert not match(Command('', '', ''), None)
assert match(Command('cd..', stderr='cd..: command not found'), None)
assert not match(Command(), None)
def test_get_new_command():
assert get_new_command(
Command('cd..', '', ''), None) == 'cd ..'
Command('cd..'), None) == 'cd ..'
+11 -6
View File
@@ -1,6 +1,6 @@
import pytest
from thefuck.types import Command
from thefuck.rules.composer_not_command import match, get_new_command
from tests.utils import Command
@pytest.fixture
@@ -36,13 +36,18 @@ def composer_not_command_one_of_this():
def test_match(composer_not_command, composer_not_command_one_of_this):
assert match(Command('composer udpate', '', composer_not_command), None)
assert match(Command('composer pdate', '', composer_not_command_one_of_this), None)
assert not match(Command('ls update', '', composer_not_command), None)
assert match(Command('composer udpate',
stderr=composer_not_command), None)
assert match(Command('composer pdate',
stderr=composer_not_command_one_of_this), None)
assert not match(Command('ls update', stderr=composer_not_command),
None)
def test_get_new_command(composer_not_command, composer_not_command_one_of_this):
assert get_new_command(Command('composer udpate', '', composer_not_command), None) \
assert get_new_command(Command('composer udpate',
stderr=composer_not_command), None) \
== 'composer update'
assert get_new_command(
Command('composer pdate', '', composer_not_command_one_of_this), None) == 'composer selfupdate'
Command('composer pdate', stderr=composer_not_command_one_of_this),
None) == 'composer selfupdate'
+12 -10
View File
@@ -1,18 +1,20 @@
# -*- encoding: utf-8 -*-
from thefuck.types import Command
from thefuck.rules.fix_alt_space import match, get_new_command
from tests.utils import Command
def test_match():
""" The character before 'grep' is Alt+Space, which happens frequently on the Mac when typing
the pipe character (Alt+7), and holding the Alt key pressed for longer than necessary. """
assert match(Command(u'ps -ef | grep foo', '', u'-bash:  grep: command not found'), None)
assert not match(Command('ps -ef | grep foo', '', ''), None)
assert not match(Command('', '', ''), None)
"""The character before 'grep' is Alt+Space, which happens frequently
on the Mac when typing the pipe character (Alt+7), and holding the Alt
key pressed for longer than necessary.
"""
assert match(Command(u'ps -ef | grep foo',
stderr=u'-bash:  grep: command not found'), None)
assert not match(Command('ps -ef | grep foo'), None)
assert not match(Command(), None)
def test_get_new_command():
""" Replace the Alt+Space character by a simple space """
assert get_new_command(Command(u'ps -ef | grep foo', '', ''), None) == 'ps -ef | grep foo'
assert get_new_command(Command(u'ps -ef | grep foo'), None)\
== 'ps -ef | grep foo'
+8 -8
View File
@@ -1,6 +1,6 @@
import pytest
from thefuck.types import Command
from thefuck.rules.git_not_command import match, get_new_command
from tests.utils import Command
@pytest.fixture
@@ -31,14 +31,14 @@ def git_command():
def test_match(git_not_command, git_command, git_not_command_one_of_this):
assert match(Command('git brnch', '', git_not_command), None)
assert match(Command('git st', '', git_not_command_one_of_this), None)
assert not match(Command('ls brnch', '', git_not_command), None)
assert not match(Command('git branch', '', git_command), None)
assert match(Command('git brnch', stderr=git_not_command), None)
assert match(Command('git st', stderr=git_not_command_one_of_this), None)
assert not match(Command('ls brnch', stderr=git_not_command), None)
assert not match(Command('git branch', stderr=git_command), None)
def test_get_new_command(git_not_command, git_not_command_one_of_this):
assert get_new_command(Command('git brnch', '', git_not_command), None)\
assert get_new_command(Command('git brnch', stderr=git_not_command), None)\
== 'git branch'
assert get_new_command(
Command('git st', '', git_not_command_one_of_this), None) == 'git status'
assert get_new_command(Command('git st', stderr=git_not_command_one_of_this),
None) == 'git status'
+5 -5
View File
@@ -1,6 +1,6 @@
import pytest
from thefuck.types import Command
from thefuck.rules.git_push import match, get_new_command
from tests.utils import Command
@pytest.fixture
@@ -14,11 +14,11 @@ To push the current branch and set the remote as upstream, use
def test_match(stderr):
assert match(Command('git push master', '', stderr), None)
assert not match(Command('git push master', '', ''), None)
assert not match(Command('ls', '', stderr), None)
assert match(Command('git push master', stderr=stderr), None)
assert not match(Command('git push master'), None)
assert not match(Command('ls', stderr=stderr), None)
def test_get_new_command(stderr):
assert get_new_command(Command('', '', stderr), None)\
assert get_new_command(Command(stderr=stderr), None)\
== "git push --set-upstream origin master"
+9 -6
View File
@@ -1,13 +1,16 @@
from thefuck.types import Command
from thefuck.rules.mkdir_p import match, get_new_command
from tests.utils import Command
def test_match():
assert match(Command('mkdir foo/bar/baz', '', 'mkdir: foo/bar: No such file or directory'), None)
assert not match(Command('mkdir foo/bar/baz', '', ''), None)
assert not match(Command('mkdir foo/bar/baz', '', 'foo bar baz'), None)
assert not match(Command('', '', ''), None)
assert match(Command('mkdir foo/bar/baz',
stderr='mkdir: foo/bar: No such file or directory'),
None)
assert not match(Command('mkdir foo/bar/baz'), None)
assert not match(Command('mkdir foo/bar/baz', stderr='foo bar baz'), None)
assert not match(Command(), None)
def test_get_new_command():
assert get_new_command(Command('mkdir foo/bar/baz', '', ''), None) == 'mkdir -p foo/bar/baz'
assert get_new_command(Command('mkdir foo/bar/baz'), None)\
== 'mkdir -p foo/bar/baz'
+6 -5
View File
@@ -1,6 +1,6 @@
import pytest
from thefuck.types import Command
from thefuck.rules.pip_unknown_command import match, get_new_command
from tests.utils import Command
@pytest.fixture
@@ -14,11 +14,12 @@ def pip_unknown_cmd_without_recommend():
def test_match(pip_unknown_cmd, pip_unknown_cmd_without_recommend):
assert match(Command('pip instatl', '', pip_unknown_cmd), None)
assert not match(Command('pip i', '', pip_unknown_cmd_without_recommend),
assert match(Command('pip instatl', stderr=pip_unknown_cmd), None)
assert not match(Command('pip i',
stderr=pip_unknown_cmd_without_recommend),
None)
def test_get_new_command(pip_unknown_cmd):
assert get_new_command(Command('pip instatl', '', pip_unknown_cmd), None)\
== 'pip install'
assert get_new_command(Command('pip instatl', stderr=pip_unknown_cmd),
None) == 'pip install'
+5 -4
View File
@@ -1,11 +1,12 @@
from thefuck.types import Command
from thefuck.rules.python_command import match, get_new_command
from tests.utils import Command
def test_match():
assert match(Command('temp.py', '', 'Permission denied'), None)
assert not match(Command('', '', ''), None)
assert match(Command('temp.py', stderr='Permission denied'), None)
assert not match(Command(), None)
def test_get_new_command():
assert get_new_command(Command('./test_sudo.py', '', ''), None) == 'python ./test_sudo.py'
assert get_new_command(Command('./test_sudo.py'), None)\
== 'python ./test_sudo.py'
+6 -6
View File
@@ -1,13 +1,13 @@
from thefuck.types import Command
from thefuck.rules.rm_dir import match, get_new_command
from tests.utils import Command
def test_match():
assert match(Command('rm foo', '', 'rm: foo: is a directory'), None)
assert match(Command('rm foo', '', 'rm: foo: Is a directory'), None)
assert not match(Command('rm foo', '', ''), None)
assert not match(Command('rm foo', '', 'foo bar baz'), None)
assert not match(Command('', '', ''), None)
assert match(Command('rm foo', stderr='rm: foo: is a directory'), None)
assert match(Command('rm foo', stderr='rm: foo: Is a directory'), None)
assert not match(Command('rm foo'), None)
assert not match(Command('rm foo', stderr='foo bar baz'), None)
assert not match(Command(), None)
def test_get_new_command():
+4 -4
View File
@@ -1,12 +1,12 @@
from thefuck.types import Command
from thefuck.rules.sl_ls import match, get_new_command
from tests.utils import Command
def test_match():
assert match(Command('sl', '', ''), None)
assert not match(Command('ls', '', ''), None)
assert match(Command('sl'), None)
assert not match(Command('ls'), None)
def test_get_new_command():
assert get_new_command(Command('sl', '', ''), None) == 'ls'
assert get_new_command(Command('sl'), None) == 'ls'
+12 -11
View File
@@ -1,8 +1,9 @@
import os
import pytest
from mock import Mock
from thefuck.types import Command
from thefuck.rules.ssh_known_hosts import match, get_new_command, remove_offending_keys
from thefuck.rules.ssh_known_hosts import match, get_new_command,\
remove_offending_keys
from tests.utils import Command
@pytest.fixture
@@ -43,18 +44,18 @@ Host key verification failed.""".format(path, '98.765.432.321')
def test_match(ssh_error):
errormsg, _, _, _ = ssh_error
assert match(Command('ssh', '', errormsg), None)
assert match(Command('ssh', '', errormsg), None)
assert match(Command('scp something something', '', errormsg), None)
assert match(Command('scp something something', '', errormsg), None)
assert not match(Command('', '', errormsg), None)
assert not match(Command('notssh', '', errormsg), None)
assert not match(Command('ssh', '', ''), None)
assert match(Command('ssh', stderr=errormsg), None)
assert match(Command('ssh', stderr=errormsg), None)
assert match(Command('scp something something', stderr=errormsg), None)
assert match(Command('scp something something', stderr=errormsg), None)
assert not match(Command(stderr=errormsg), None)
assert not match(Command('notssh', stderr=errormsg), None)
assert not match(Command('ssh'), None)
def test_remove_offending_keys(ssh_error):
errormsg, path, reset, known_hosts = ssh_error
command = Command('ssh user@host', '', errormsg)
command = Command('ssh user@host', stderr=errormsg)
remove_offending_keys(command, None)
expected = ['123.234.567.890 asdjkasjdakjsd\n', '111.222.333.444 qwepoiwqepoiss\n']
assert known_hosts(path) == expected
@@ -65,5 +66,5 @@ def test_get_new_command(ssh_error, monkeypatch):
method = Mock()
monkeypatch.setattr('thefuck.rules.ssh_known_hosts.remove_offending_keys', method)
assert get_new_command(Command('ssh user@host', '', errormsg), None) == 'ssh user@host'
assert get_new_command(Command('ssh user@host', stderr=errormsg), None) == 'ssh user@host'
assert method.call_count
+6 -6
View File
@@ -1,13 +1,13 @@
from thefuck.types import Command
from thefuck.rules.sudo import match, get_new_command
from tests.utils import Command
def test_match():
assert match(Command('', '', 'Permission denied'), None)
assert match(Command('', '', 'permission denied'), None)
assert match(Command('', '', "npm ERR! Error: EACCES, unlink"), None)
assert not match(Command('', '', ''), None)
assert match(Command(stderr='Permission denied'), None)
assert match(Command(stderr='permission denied'), None)
assert match(Command(stderr="npm ERR! Error: EACCES, unlink"), None)
assert not match(Command(), None)
def test_get_new_command():
assert get_new_command(Command('ls', '', ''), None) == 'sudo ls'
assert get_new_command(Command('ls'), None) == 'sudo ls'