mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-30 22:54:14 +00:00 
			
		
		
		
	⚠️ Remove settings param from rules match, get_new_command and side_effect
				
					
				
			This commit is contained in:
		| @@ -11,7 +11,7 @@ from tests.utils import Command | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='vim', stderr='vim: command not found')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, return_value', [ | ||||
| @@ -24,7 +24,7 @@ def test_match(command): | ||||
| def test_match_mocked(cmdnf_mock, command, return_value): | ||||
|     get_packages = Mock(return_value=return_value) | ||||
|     cmdnf_mock.CommandNotFound.return_value = Mock(getPackages=get_packages) | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|     assert cmdnf_mock.CommandNotFound.called | ||||
|     assert get_packages.called | ||||
|  | ||||
| @@ -32,7 +32,7 @@ def test_match_mocked(cmdnf_mock, command, return_value): | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='vim', stderr=''), Command()]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| # python-commandnotfound is available in ubuntu 14.04+ | ||||
| @@ -44,7 +44,7 @@ def test_not_match(command): | ||||
|     (Command('sudo vim'), 'sudo apt-get install vim && sudo vim'), | ||||
|     (Command('sudo convert'), 'sudo apt-get install imagemagick && sudo convert')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command, return_value', [ | ||||
| @@ -63,4 +63,4 @@ def test_get_new_command(command, new_command): | ||||
| def test_get_new_command_mocked(cmdnf_mock, command, new_command, return_value): | ||||
|     get_packages = Mock(return_value=return_value) | ||||
|     cmdnf_mock.CommandNotFound.return_value = Mock(getPackages=get_packages) | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -4,7 +4,7 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('apt-get search foo'), None) | ||||
|     assert match(Command('apt-get search foo')) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -18,8 +18,8 @@ def test_match(): | ||||
|     Command('apt-get update') | ||||
| ]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command('apt-get search foo'), None) == 'apt-cache search foo' | ||||
|     assert get_new_command(Command('apt-get search foo')) == 'apt-cache search foo' | ||||
|   | ||||
| @@ -28,9 +28,9 @@ def _is_not_okay_to_test(): | ||||
| def test_match(brew_no_available_formula, brew_already_installed, | ||||
|                brew_install_no_argument): | ||||
|     assert match(Command('brew install elsticsearch', | ||||
|                          stderr=brew_no_available_formula), None) | ||||
|                          stderr=brew_no_available_formula)) | ||||
|     assert not match(Command('brew install git', | ||||
|                              stderr=brew_already_installed), None) | ||||
|                              stderr=brew_already_installed)) | ||||
|     assert not match(Command('brew install', stderr=brew_install_no_argument), | ||||
|                      None) | ||||
|  | ||||
| @@ -39,7 +39,7 @@ def test_match(brew_no_available_formula, brew_already_installed, | ||||
|                     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', | ||||
|                                    stderr=brew_no_available_formula), None)\ | ||||
|                                    stderr=brew_no_available_formula))\ | ||||
|         == 'brew install elasticsearch' | ||||
|  | ||||
|     assert get_new_command(Command('brew install aa', | ||||
|   | ||||
| @@ -15,15 +15,15 @@ def brew_unknown_cmd2(): | ||||
|  | ||||
|  | ||||
| def test_match(brew_unknown_cmd): | ||||
|     assert match(Command('brew inst', stderr=brew_unknown_cmd), None) | ||||
|     assert match(Command('brew inst', stderr=brew_unknown_cmd)) | ||||
|     for command in _brew_commands(): | ||||
|         assert not match(Command('brew ' + command), None) | ||||
|         assert not match(Command('brew ' + command)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(brew_unknown_cmd, brew_unknown_cmd2): | ||||
|     assert get_new_command(Command('brew inst', stderr=brew_unknown_cmd), | ||||
|                            None) == ['brew list', 'brew install', 'brew uninstall'] | ||||
|     assert get_new_command(Command('brew inst', stderr=brew_unknown_cmd)) \ | ||||
|            == ['brew list', 'brew install', 'brew uninstall'] | ||||
|  | ||||
|     cmds = get_new_command(Command('brew instaa', stderr=brew_unknown_cmd2), None) | ||||
|     cmds = get_new_command(Command('brew instaa', stderr=brew_unknown_cmd2)) | ||||
|     assert 'brew install' in cmds | ||||
|     assert 'brew uninstall' in cmds | ||||
|   | ||||
| @@ -6,10 +6,10 @@ from tests.utils import Command | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='brew upgrade')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('brew upgrade'), 'brew upgrade --all')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -12,10 +12,10 @@ no_such_subcommand = """No such subcommand | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='cargo buid', stderr=no_such_subcommand)]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('cargo buid', stderr=no_such_subcommand), 'cargo build')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -9,17 +9,17 @@ from tests.utils import Command | ||||
|             stderr='cd: foo: No such file or directory'), | ||||
|     Command(script='cd foo/bar/baz', stderr='cd: can\'t cd to foo/bar/baz')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='cd foo', stderr=''), Command()]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('cd foo'), 'mkdir -p foo && cd foo'), | ||||
|     (Command('cd foo/bar/baz'), 'mkdir -p foo/bar/baz && cd foo/bar/baz')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -3,10 +3,10 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('cd..', stderr='cd..: command not found'), None) | ||||
|     assert not match(Command(), None) | ||||
|     assert match(Command('cd..', stderr='cd..: command not found')) | ||||
|     assert not match(Command()) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command( | ||||
|         Command('cd..'), None) == 'cd ..' | ||||
|         Command('cd..')) == 'cd ..' | ||||
|   | ||||
| @@ -41,17 +41,16 @@ def composer_not_command_one_of_this(): | ||||
|  | ||||
| def test_match(composer_not_command, composer_not_command_one_of_this): | ||||
|     assert match(Command('composer udpate', | ||||
|                          stderr=composer_not_command), None) | ||||
|                          stderr=composer_not_command)) | ||||
|     assert match(Command('composer pdate', | ||||
|                          stderr=composer_not_command_one_of_this), None) | ||||
|     assert not match(Command('ls update', stderr=composer_not_command), | ||||
|                      None) | ||||
|                          stderr=composer_not_command_one_of_this)) | ||||
|     assert not match(Command('ls update', stderr=composer_not_command)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(composer_not_command, composer_not_command_one_of_this): | ||||
|     assert get_new_command(Command('composer udpate', | ||||
|                                    stderr=composer_not_command), None) \ | ||||
|                                    stderr=composer_not_command)) \ | ||||
|            == 'composer update' | ||||
|     assert get_new_command( | ||||
|         Command('composer pdate', stderr=composer_not_command_one_of_this), | ||||
|         None) == 'composer selfupdate' | ||||
|         Command('composer pdate', stderr=composer_not_command_one_of_this)) \ | ||||
|            == 'composer selfupdate' | ||||
|   | ||||
| @@ -7,7 +7,7 @@ from tests.utils import Command | ||||
|     ('cp dir', 'cp: dor: is a directory'), | ||||
|     ('cp dir', "cp: omitting directory 'dir'")]) | ||||
| def test_match(script, stderr): | ||||
|     assert match(Command(script, stderr=stderr), None) | ||||
|     assert match(Command(script, stderr=stderr)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script, stderr', [ | ||||
| @@ -15,8 +15,8 @@ def test_match(script, stderr): | ||||
|     ('some dir', "cp: omitting directory 'dir'"), | ||||
|     ('cp dir', '')]) | ||||
| def test_not_match(script, stderr): | ||||
|     assert not match(Command(script, stderr=stderr), None) | ||||
|     assert not match(Command(script, stderr=stderr)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command(script='cp dir'), None) == 'cp -a dir' | ||||
|     assert get_new_command(Command(script='cp dir')) == 'cp -a dir' | ||||
|   | ||||
| @@ -45,14 +45,14 @@ parametrize_script = pytest.mark.parametrize('script, fixed', [ | ||||
| @parametrize_script | ||||
| def test_match(tar_error, filename, script, fixed): | ||||
|     tar_error(filename) | ||||
|     assert match(Command(script=script.format(filename)), None) | ||||
|     assert match(Command(script=script.format(filename))) | ||||
|  | ||||
|  | ||||
| @parametrize_filename | ||||
| @parametrize_script | ||||
| def test_side_effect(tar_error, filename, script, fixed): | ||||
|     tar_error(filename) | ||||
|     side_effect(Command(script=script.format(filename)), None, None) | ||||
|     side_effect(Command(script=script.format(filename)), None) | ||||
|     assert(os.listdir('.') == [filename]) | ||||
|  | ||||
|  | ||||
| @@ -60,4 +60,4 @@ def test_side_effect(tar_error, filename, script, fixed): | ||||
| @parametrize_script | ||||
| def test_get_new_command(tar_error, filename, script, fixed): | ||||
|     tar_error(filename) | ||||
|     assert get_new_command(Command(script=script.format(filename)), None) == fixed.format(filename) | ||||
|     assert get_new_command(Command(script=script.format(filename))) == fixed.format(filename) | ||||
|   | ||||
| @@ -27,14 +27,14 @@ def zip_error(tmpdir): | ||||
|     'unzip foo', | ||||
|     'unzip foo.zip']) | ||||
| def test_match(zip_error, script): | ||||
|     assert match(Command(script=script), None) | ||||
|     assert match(Command(script=script)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script', [ | ||||
|     'unzip foo', | ||||
|     'unzip foo.zip']) | ||||
| def test_side_effect(zip_error, script): | ||||
|     side_effect(Command(script=script), None, None) | ||||
|     side_effect(Command(script=script), None) | ||||
|     assert(os.listdir('.') == ['foo.zip']) | ||||
|  | ||||
|  | ||||
| @@ -42,4 +42,4 @@ def test_side_effect(zip_error, script): | ||||
|     ('unzip foo', 'unzip foo -d foo'), | ||||
|     ('unzip foo.zip', 'unzip foo.zip -d foo')]) | ||||
| def test_get_new_command(zip_error, script, fixed): | ||||
|     assert get_new_command(Command(script=script), None) == fixed | ||||
|     assert get_new_command(Command(script=script)) == fixed | ||||
|   | ||||
| @@ -41,13 +41,13 @@ south.exceptions.GhostMigrations: | ||||
|  | ||||
|  | ||||
| def test_match(stderr): | ||||
|     assert match(Command('./manage.py migrate', stderr=stderr), None) | ||||
|     assert match(Command('python manage.py migrate', stderr=stderr), None) | ||||
|     assert not match(Command('./manage.py migrate'), None) | ||||
|     assert not match(Command('app migrate', stderr=stderr), None) | ||||
|     assert not match(Command('./manage.py test', stderr=stderr), None) | ||||
|     assert match(Command('./manage.py migrate', stderr=stderr)) | ||||
|     assert match(Command('python manage.py migrate', stderr=stderr)) | ||||
|     assert not match(Command('./manage.py migrate')) | ||||
|     assert not match(Command('app migrate', stderr=stderr)) | ||||
|     assert not match(Command('./manage.py test', stderr=stderr)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command('./manage.py migrate auth'), None)\ | ||||
|     assert get_new_command(Command('./manage.py migrate auth'))\ | ||||
|         == './manage.py migrate auth --delete-ghost-migrations' | ||||
|   | ||||
| @@ -31,13 +31,13 @@ The following options are available: | ||||
|  | ||||
|  | ||||
| def test_match(stderr): | ||||
|     assert match(Command('./manage.py migrate', stderr=stderr), None) | ||||
|     assert match(Command('python manage.py migrate', stderr=stderr), None) | ||||
|     assert not match(Command('./manage.py migrate'), None) | ||||
|     assert not match(Command('app migrate', stderr=stderr), None) | ||||
|     assert not match(Command('./manage.py test', stderr=stderr), None) | ||||
|     assert match(Command('./manage.py migrate', stderr=stderr)) | ||||
|     assert match(Command('python manage.py migrate', stderr=stderr)) | ||||
|     assert not match(Command('./manage.py migrate')) | ||||
|     assert not match(Command('app migrate', stderr=stderr)) | ||||
|     assert not match(Command('./manage.py test', stderr=stderr)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command('./manage.py migrate auth'), None) \ | ||||
|     assert get_new_command(Command('./manage.py migrate auth')) \ | ||||
|            == './manage.py migrate auth --merge' | ||||
|   | ||||
| @@ -110,14 +110,14 @@ def stderr(cmd): | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('docker pes', stderr=stderr('pes')), None) | ||||
|     assert match(Command('docker pes', stderr=stderr('pes'))) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script, stderr', [ | ||||
|     ('docker ps', ''), | ||||
|     ('cat pes', stderr('pes'))]) | ||||
| def test_not_match(script, stderr): | ||||
|     assert not match(Command(script, stderr=stderr), None) | ||||
|     assert not match(Command(script, stderr=stderr)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.usefixtures('docker_help') | ||||
| @@ -126,4 +126,4 @@ def test_not_match(script, stderr): | ||||
|     ('tags', ['tag', 'stats', 'images'])]) | ||||
| def test_get_new_command(wrong, fixed): | ||||
|     command = Command('docker {}'.format(wrong), stderr=stderr(wrong)) | ||||
|     assert get_new_command(command, None) == ['docker {}'.format(x) for x in fixed] | ||||
|     assert get_new_command(command) == ['docker {}'.format(x) for x in fixed] | ||||
|   | ||||
| @@ -7,11 +7,11 @@ from tests.utils import Command | ||||
|     Command(script='cd cd foo'), | ||||
|     Command(script='git git push origin/master')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('cd cd foo'), 'cd foo'), | ||||
|     (Command('git git push origin/master'), 'git push origin/master')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -11,12 +11,12 @@ def test_match(): | ||||
|  | ||||
|     """ | ||||
|     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) | ||||
|                          stderr=u'-bash:  grep: command not found')) | ||||
|     assert not match(Command('ps -ef | grep foo')) | ||||
|     assert not match(Command()) | ||||
|  | ||||
|  | ||||
| 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)\ | ||||
|     assert get_new_command(Command(u'ps -ef | grep foo'))\ | ||||
|            == 'ps -ef | grep foo' | ||||
|   | ||||
| @@ -184,7 +184,7 @@ E       NameError: name 'mocker' is not defined | ||||
| def test_match(mocker, monkeypatch, test): | ||||
|     mocker.patch('os.path.isfile', return_value=True) | ||||
|     monkeypatch.setenv('EDITOR', 'dummy_editor') | ||||
|     assert match(Command(stdout=test[4], stderr=test[5]), None) | ||||
|     assert match(Command(stdout=test[4], stderr=test[5])) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('test', tests) | ||||
| @@ -194,7 +194,7 @@ def test_no_editor(mocker, monkeypatch, test): | ||||
|     if 'EDITOR' in os.environ: | ||||
|         monkeypatch.delenv('EDITOR') | ||||
|  | ||||
|     assert not match(Command(stdout=test[4], stderr=test[5]), None) | ||||
|     assert not match(Command(stdout=test[4], stderr=test[5])) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('test', tests) | ||||
| @@ -203,7 +203,7 @@ def test_not_file(mocker, monkeypatch, test): | ||||
|     mocker.patch('os.path.isfile', return_value=False) | ||||
|     monkeypatch.setenv('EDITOR', 'dummy_editor') | ||||
|  | ||||
|     assert not match(Command(stdout=test[4], stderr=test[5]), None) | ||||
|     assert not match(Command(stdout=test[4], stderr=test[5])) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('test', tests) | ||||
| @@ -219,16 +219,16 @@ def test_get_new_command(mocker, monkeypatch, test): | ||||
|  | ||||
| @pytest.mark.parametrize('test', tests) | ||||
| @pytest.mark.usefixtures('no_memoize') | ||||
| def test_get_new_command_with_settings(mocker, monkeypatch, test): | ||||
| def test_get_new_command_with_settings(mocker, monkeypatch, test, settings): | ||||
|     mocker.patch('os.path.isfile', return_value=True) | ||||
|     monkeypatch.setenv('EDITOR', 'dummy_editor') | ||||
|  | ||||
|     cmd = Command(script=test[0], stdout=test[4], stderr=test[5]) | ||||
|     settings = Settings({'fixcolcmd': '{editor} {file} +{line}:{col}'}) | ||||
|     settings.fixcolcmd = '{editor} {file} +{line}:{col}' | ||||
|  | ||||
|     if test[3]: | ||||
|         assert (get_new_command(cmd, settings) == | ||||
|         assert (get_new_command(cmd) == | ||||
|             'dummy_editor {} +{}:{} && {}'.format(test[1], test[2], test[3], test[0])) | ||||
|     else: | ||||
|         assert (get_new_command(cmd, settings) == | ||||
|         assert (get_new_command(cmd) == | ||||
|             'dummy_editor {} +{} && {}'.format(test[1], test[2], test[0])) | ||||
|   | ||||
| @@ -18,7 +18,7 @@ def did_not_match(target, did_you_forget=True): | ||||
|     Command(script='git commit unknown', | ||||
|             stderr=did_not_match('unknown'))])  # Older versions of Git | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -27,7 +27,7 @@ def test_match(command): | ||||
|     Command(script='git commit unknown',  # Newer versions of Git | ||||
|             stderr=did_not_match('unknown', False))]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -36,4 +36,4 @@ def test_not_match(command): | ||||
|     (Command('git commit unknown', stderr=did_not_match('unknown')),  # Old Git | ||||
|      'git add -- unknown && git commit unknown')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -12,11 +12,11 @@ If you are sure you want to delete it, run 'git branch -D branch'. | ||||
|  | ||||
|  | ||||
| def test_match(stderr): | ||||
|     assert match(Command('git branch -d branch', stderr=stderr), None) | ||||
|     assert not match(Command('git branch -d branch'), None) | ||||
|     assert not match(Command('ls', stderr=stderr), None) | ||||
|     assert match(Command('git branch -d branch', stderr=stderr)) | ||||
|     assert not match(Command('git branch -d branch')) | ||||
|     assert not match(Command('ls', stderr=stderr)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(stderr): | ||||
|     assert get_new_command(Command('git branch -d branch', stderr=stderr), None)\ | ||||
|     assert get_new_command(Command('git branch -d branch', stderr=stderr))\ | ||||
|         == "git branch -D branch" | ||||
|   | ||||
| @@ -4,16 +4,16 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('git branch list'), None) | ||||
|     assert match(Command('git branch list')) | ||||
|  | ||||
|  | ||||
| def test_not_match(): | ||||
|     assert not match(Command(), None) | ||||
|     assert not match(Command('git commit'), None) | ||||
|     assert not match(Command('git branch'), None) | ||||
|     assert not match(Command('git stash list'), None) | ||||
|     assert not match(Command()) | ||||
|     assert not match(Command('git commit')) | ||||
|     assert not match(Command('git branch')) | ||||
|     assert not match(Command('git stash list')) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert (get_new_command(Command('git branch list'), None) == | ||||
|     assert (get_new_command(Command('git branch list')) == | ||||
|             shells.and_('git branch --delete list', 'git branch')) | ||||
|   | ||||
| @@ -21,7 +21,7 @@ def get_branches(mocker): | ||||
|     Command(script='git checkout unknown', stderr=did_not_match('unknown')), | ||||
|     Command(script='git commit unknown', stderr=did_not_match('unknown'))]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -30,7 +30,7 @@ def test_match(command): | ||||
|     Command(script='git checkout known', stderr=('')), | ||||
|     Command(script='git commit known', stderr=(''))]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('branches, command, new_command', [ | ||||
| @@ -50,4 +50,4 @@ def test_not_match(command): | ||||
|      'git commit test-random-branch-123')]) | ||||
| def test_get_new_command(branches, command, new_command, get_branches): | ||||
|     get_branches.return_value = branches | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -7,7 +7,7 @@ from tests.utils import Command | ||||
|     Command(script='git diff foo'), | ||||
|     Command(script='git diff')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -16,11 +16,11 @@ def test_match(command): | ||||
|     Command(script='git branch'), | ||||
|     Command(script='git log')]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('git diff'), 'git diff --staged'), | ||||
|     (Command('git diff foo'), 'git diff --staged foo')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -20,7 +20,7 @@ usage: git stash list [<options>] | ||||
|     'git stash Some message', | ||||
|     'git stash saev Some message']) | ||||
| def test_match(wrong): | ||||
|     assert match(Command(wrong, stderr=git_stash_err), None) | ||||
|     assert match(Command(wrong, stderr=git_stash_err)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('wrong,fixed', [ | ||||
| @@ -28,4 +28,4 @@ def test_match(wrong): | ||||
|     ('git stash Some message', 'git stash save Some message'), | ||||
|     ('git stash saev Some message', 'git stash save Some message')]) | ||||
| def test_get_new_command(wrong, fixed): | ||||
|     assert get_new_command(Command(wrong, stderr=git_stash_err), None) == fixed | ||||
|     assert get_new_command(Command(wrong, stderr=git_stash_err)) == fixed | ||||
|   | ||||
| @@ -41,17 +41,17 @@ def git_command(): | ||||
|  | ||||
|  | ||||
| def test_match(git_not_command, git_command, git_not_command_one_of_this): | ||||
|     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) | ||||
|     assert match(Command('git brnch', stderr=git_not_command)) | ||||
|     assert match(Command('git st', stderr=git_not_command_one_of_this)) | ||||
|     assert not match(Command('ls brnch', stderr=git_not_command)) | ||||
|     assert not match(Command('git branch', stderr=git_command)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(git_not_command, git_not_command_one_of_this, | ||||
|                          git_not_command_closest): | ||||
|     assert get_new_command(Command('git brnch', stderr=git_not_command), None) \ | ||||
|     assert get_new_command(Command('git brnch', stderr=git_not_command)) \ | ||||
|            == ['git branch'] | ||||
|     assert get_new_command(Command('git st', stderr=git_not_command_one_of_this), | ||||
|                            None) == ['git stats', 'git stash', 'git stage'] | ||||
|     assert get_new_command(Command('git tags', stderr=git_not_command_closest), | ||||
|                            None) == ['git tag', 'git stage'] | ||||
|     assert get_new_command(Command('git st', stderr=git_not_command_one_of_this)) \ | ||||
|            == ['git stats', 'git stash', 'git stage'] | ||||
|     assert get_new_command(Command('git tags', stderr=git_not_command_closest)) \ | ||||
|            == ['git tag', 'git stage'] | ||||
|   | ||||
| @@ -19,11 +19,11 @@ If you wish to set tracking information for this branch you can do so with: | ||||
|  | ||||
|  | ||||
| def test_match(stderr): | ||||
|     assert match(Command('git pull', stderr=stderr), None) | ||||
|     assert not match(Command('git pull'), None) | ||||
|     assert not match(Command('ls', stderr=stderr), None) | ||||
|     assert match(Command('git pull', stderr=stderr)) | ||||
|     assert not match(Command('git pull')) | ||||
|     assert not match(Command('ls', stderr=stderr)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(stderr): | ||||
|     assert get_new_command(Command('git pull', stderr=stderr), None) \ | ||||
|     assert get_new_command(Command('git pull', stderr=stderr)) \ | ||||
|            == "git branch --set-upstream-to=origin/master master && git pull" | ||||
|   | ||||
| @@ -12,10 +12,10 @@ Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='git pull git@github.com:mcarton/thefuck.git', stderr=git_err)]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, output', [ | ||||
|     (Command(script='git pull git@github.com:mcarton/thefuck.git', stderr=git_err), 'git clone git@github.com:mcarton/thefuck.git')]) | ||||
| def test_get_new_command(command, output): | ||||
|     assert get_new_command(command, None) == output | ||||
|     assert get_new_command(command) == output | ||||
|   | ||||
| @@ -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=stderr), None) | ||||
|     assert not match(Command('git push master'), None) | ||||
|     assert not match(Command('ls', stderr=stderr), None) | ||||
|     assert match(Command('git push master', stderr=stderr)) | ||||
|     assert not match(Command('git push master')) | ||||
|     assert not match(Command('ls', stderr=stderr)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(stderr): | ||||
|     assert get_new_command(Command('git push', stderr=stderr), None)\ | ||||
|     assert get_new_command(Command('git push', stderr=stderr))\ | ||||
|         == "git push --set-upstream origin master" | ||||
|   | ||||
| @@ -30,7 +30,7 @@ To /tmp/bar | ||||
|     Command(script='git push nvbn', stderr=git_err), | ||||
|     Command(script='git push nvbn master', stderr=git_err)]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -41,7 +41,7 @@ def test_match(command): | ||||
|     Command(script='git push nvbn', stderr=git_ok), | ||||
|     Command(script='git push nvbn master', stderr=git_uptodate)]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, output', [ | ||||
| @@ -49,4 +49,4 @@ def test_not_match(command): | ||||
|     (Command(script='git push nvbn', stderr=git_err), 'git push --force nvbn'), | ||||
|     (Command(script='git push nvbn master', stderr=git_err), 'git push --force nvbn master')]) | ||||
| def test_get_new_command(command, output): | ||||
|     assert get_new_command(command, None) == output | ||||
|     assert get_new_command(command) == output | ||||
|   | ||||
| @@ -30,7 +30,7 @@ To /tmp/bar | ||||
|     Command(script='git push nvbn', stderr=git_err), | ||||
|     Command(script='git push nvbn master', stderr=git_err)]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -41,7 +41,7 @@ def test_match(command): | ||||
|     Command(script='git push nvbn', stderr=git_ok), | ||||
|     Command(script='git push nvbn master', stderr=git_uptodate)]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, output', [ | ||||
| @@ -51,4 +51,4 @@ def test_not_match(command): | ||||
|     (Command(script='git push nvbn master', stderr=git_err), | ||||
|      'git pull nvbn master && git push nvbn master')]) | ||||
| def test_get_new_command(command, output): | ||||
|     assert get_new_command(command, None) == output | ||||
|     assert get_new_command(command) == output | ||||
|   | ||||
| @@ -18,14 +18,14 @@ rebase_error = ( | ||||
|     Command(script='git cherry-pick a1b2c3d', stderr=cherry_pick_error), | ||||
|     Command(script='git rebase -i HEAD~7', stderr=rebase_error)]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='git cherry-pick a1b2c3d', stderr=('')), | ||||
|     Command(script='git rebase -i HEAD~7', stderr=(''))]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -34,4 +34,4 @@ def test_not_match(command): | ||||
|     (Command('git rebase -i HEAD~7', stderr=rebase_error), | ||||
|      'git stash && git rebase -i HEAD~7')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -7,11 +7,11 @@ from tests.utils import Command | ||||
|     Command(script='go run foo'), | ||||
|     Command(script='go run bar')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('go run foo'), 'go run foo.go'), | ||||
|     (Command('go run bar'), 'go run bar.go')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -3,10 +3,10 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('grep blah .', stderr='grep: .: Is a directory'), None) | ||||
|     assert not match(Command(), None) | ||||
|     assert match(Command('grep blah .', stderr='grep: .: Is a directory')) | ||||
|     assert not match(Command()) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command( | ||||
|         Command('grep blah .'), None) == 'grep -r blah .' | ||||
|         Command('grep blah .')) == 'grep -r blah .' | ||||
|   | ||||
| @@ -11,18 +11,18 @@ def stdout(task): | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('gulp srve', stdout('srve')), None) | ||||
|     assert match(Command('gulp srve', stdout('srve'))) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script, stdout', [ | ||||
|     ('gulp serve', ''), | ||||
|     ('cat srve', stdout('srve'))]) | ||||
| def test_not_march(script, stdout): | ||||
|     assert not match(Command(script, stdout), None) | ||||
|     assert not match(Command(script, stdout)) | ||||
|  | ||||
|  | ||||
| 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', 'gulp default'] | ||||
|     assert get_new_command(command) == ['gulp serve', 'gulp default'] | ||||
|   | ||||
| @@ -4,17 +4,14 @@ from thefuck.rules.has_exists_script import match, get_new_command | ||||
|  | ||||
| def test_match(): | ||||
|     with patch('os.path.exists', return_value=True): | ||||
|         assert match(Mock(script='main', stderr='main: command not found'), | ||||
|                      None) | ||||
|         assert match(Mock(script='main', stderr='main: command not found')) | ||||
|         assert match(Mock(script='main --help', | ||||
|                           stderr='main: command not found'), | ||||
|                      None) | ||||
|         assert not match(Mock(script='main', stderr=''), None) | ||||
|                           stderr='main: command not found')) | ||||
|         assert not match(Mock(script='main', stderr='')) | ||||
|  | ||||
|     with patch('os.path.exists', return_value=False): | ||||
|         assert not match(Mock(script='main', stderr='main: command not found'), | ||||
|                          None) | ||||
|         assert not match(Mock(script='main', stderr='main: command not found')) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Mock(script='main --help'), None) == './main --help' | ||||
|     assert get_new_command(Mock(script='main --help')) == './main --help' | ||||
|   | ||||
| @@ -16,14 +16,14 @@ no_suggest_stderr = ''' !    `aaaaa` is not a heroku command. | ||||
| @pytest.mark.parametrize('cmd', ['log', 'pge']) | ||||
| def test_match(cmd): | ||||
|     assert match( | ||||
|         Command('heroku {}'.format(cmd), stderr=suggest_stderr(cmd)), None) | ||||
|         Command('heroku {}'.format(cmd), stderr=suggest_stderr(cmd))) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script, stderr', [ | ||||
|     ('cat log', suggest_stderr('log')), | ||||
|     ('heroku aaa', no_suggest_stderr)]) | ||||
| def test_not_match(script, stderr): | ||||
|     assert not match(Command(script, stderr=stderr), None) | ||||
|     assert not match(Command(script, stderr=stderr)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('cmd, result', [ | ||||
| @@ -31,4 +31,4 @@ def test_not_match(script, stderr): | ||||
|     ('pge', ['heroku pg', 'heroku logs'])]) | ||||
| def test_get_new_command(cmd, result): | ||||
|     command = Command('heroku {}'.format(cmd), stderr=suggest_stderr(cmd)) | ||||
|     assert get_new_command(command, None) == result | ||||
|     assert get_new_command(command) == result | ||||
|   | ||||
| @@ -25,13 +25,13 @@ def callables(mocker): | ||||
| @pytest.mark.usefixtures('history', 'callables', 'no_memoize', 'alias') | ||||
| @pytest.mark.parametrize('script', ['ls cet', 'daff x']) | ||||
| def test_match(script): | ||||
|     assert match(Command(script=script), None) | ||||
|     assert match(Command(script=script)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.usefixtures('history', 'callables', 'no_memoize', 'alias') | ||||
| @pytest.mark.parametrize('script', ['apt-get', 'nocommand y']) | ||||
| def test_not_match(script): | ||||
|     assert not match(Command(script=script), None) | ||||
|     assert not match(Command(script=script)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.usefixtures('history', 'callables', 'no_memoize', 'alias') | ||||
| @@ -39,4 +39,4 @@ def test_not_match(script): | ||||
|     ('ls cet', 'ls cat'), | ||||
|     ('daff x', 'diff x')]) | ||||
| def test_get_new_command(script, result): | ||||
|     assert get_new_command(Command(script), None) == result | ||||
|     assert get_new_command(Command(script)) == result | ||||
|   | ||||
| @@ -7,11 +7,11 @@ from tests.utils import Command | ||||
|     Command(script='java foo.java'), | ||||
|     Command(script='java bar.java')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('java foo.java'), 'java foo'), | ||||
|     (Command('java bar.java'), 'java bar')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -7,11 +7,11 @@ from tests.utils import Command | ||||
|     Command(script='javac foo'), | ||||
|     Command(script='javac bar')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('javac foo'), 'javac foo.java'), | ||||
|     (Command('javac bar'), 'javac bar.java')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -14,10 +14,10 @@ Did you mean this? | ||||
|  | ||||
|  | ||||
| def test_match(is_not_task): | ||||
|     assert match(Command(script='lein rpl', stderr=is_not_task), None) | ||||
|     assert not match(Command(script='ls', stderr=is_not_task), None) | ||||
|     assert match(Command(script='lein rpl', stderr=is_not_task)) | ||||
|     assert not match(Command(script='ls', stderr=is_not_task)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(is_not_task): | ||||
|     assert get_new_command(Command(script='lein rpl --help', stderr=is_not_task), | ||||
|                            None) == ['lein repl --help', 'lein jar --help'] | ||||
|     assert get_new_command(Command(script='lein rpl --help', stderr=is_not_task)) \ | ||||
|            == ['lein repl --help', 'lein jar --help'] | ||||
|   | ||||
| @@ -3,14 +3,14 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command(script='ls'), None) | ||||
|     assert match(Command(script='ls file.py'), None) | ||||
|     assert match(Command(script='ls /opt'), None) | ||||
|     assert not match(Command(script='ls -lah /opt'), None) | ||||
|     assert not match(Command(script='pacman -S binutils'), None) | ||||
|     assert not match(Command(script='lsof'), None) | ||||
|     assert match(Command(script='ls')) | ||||
|     assert match(Command(script='ls file.py')) | ||||
|     assert match(Command(script='ls /opt')) | ||||
|     assert not match(Command(script='ls -lah /opt')) | ||||
|     assert not match(Command(script='pacman -S binutils')) | ||||
|     assert not match(Command(script='lsof')) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command(script='ls file.py'), None) == 'ls -lah file.py' | ||||
|     assert get_new_command(Command(script='ls'), None) == 'ls -lah' | ||||
|     assert get_new_command(Command(script='ls file.py')) == 'ls -lah file.py' | ||||
|     assert get_new_command(Command(script='ls')) == 'ls -lah' | ||||
|   | ||||
| @@ -12,14 +12,14 @@ from tests.utils import Command | ||||
|     Command('man -s 2 read'), | ||||
|     Command('man -s 3 read')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command('man'), | ||||
|     Command('man ')]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -31,4 +31,4 @@ def test_not_match(command): | ||||
|     (Command('man -s 2 read'), 'man -s 3 read'), | ||||
|     (Command('man -s 3 read'), 'man -s 2 read')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -3,10 +3,10 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('mandiff', stderr='mandiff: command not found'), None) | ||||
|     assert not match(Command(), None) | ||||
|     assert match(Command('mandiff', stderr='mandiff: command not found')) | ||||
|     assert not match(Command()) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command( | ||||
|         Command('mandiff'), None) == 'man diff' | ||||
|         Command('mandiff')) == 'man diff' | ||||
|   | ||||
| @@ -37,7 +37,7 @@ from thefuck.rules.mercurial import ( | ||||
|     )), | ||||
| ]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -63,7 +63,7 @@ def test_match(command): | ||||
|     )), | ||||
| ]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, possibilities', [ | ||||
| @@ -131,4 +131,4 @@ def test_extract_possibilities(command, possibilities): | ||||
|     )), 'hg rebase re'), | ||||
| ]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -9,7 +9,7 @@ from tests.utils import Command | ||||
|     Command('hdfs dfs -mkdir foo/bar/baz', stderr='mkdir: `foo/bar/baz\': No such file or directory') | ||||
|     ]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -19,7 +19,7 @@ def test_match(command): | ||||
|     Command('./bin/hdfs dfs -mkdir foo/bar/baz'), | ||||
|     Command()]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -27,5 +27,5 @@ def test_not_match(command): | ||||
|     (Command('hdfs dfs -mkdir foo/bar/baz'), 'hdfs dfs -mkdir -p foo/bar/baz'), | ||||
|     (Command('./bin/hdfs dfs -mkdir foo/bar/baz'), './bin/hdfs dfs -mkdir -p foo/bar/baz')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,7 @@ from tests.utils import Command | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='mvn', stdout='[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -30,11 +30,11 @@ def test_match(command): | ||||
|     Command(script='mvn -v') | ||||
| ]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command(script='mvn', stdout='[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]'), ['mvn clean package', 'mvn clean install']), | ||||
|     (Command(script='mvn -N', stdout='[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]'), ['mvn -N clean package', 'mvn -N clean install'])]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,7 @@ from tests.utils import Command | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='mvn cle', stdout='[ERROR] Unknown lifecycle phase "cle". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -30,11 +30,11 @@ def test_match(command): | ||||
|     Command(script='mvn -v') | ||||
| ]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command(script='mvn cle', stdout='[ERROR] Unknown lifecycle phase "cle". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]'), ['mvn clean', 'mvn compile']), | ||||
|     (Command(script='mvn claen package', stdout='[ERROR] Unknown lifecycle phase "claen". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]'), ['mvn clean package'])]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|   | ||||
| @@ -11,19 +11,17 @@ def get_all_executables(mocker): | ||||
|  | ||||
| @pytest.mark.usefixtures('no_memoize') | ||||
| def test_match(): | ||||
|     assert match(Command(stderr='vom: not found', script='vom file.py'), None) | ||||
|     assert match(Command(stderr='fucck: not found', script='fucck'), None) | ||||
|     assert not match(Command(stderr='qweqwe: not found', script='qweqwe'), None) | ||||
|     assert not match(Command(stderr='some text', script='vom file.py'), None) | ||||
|     assert match(Command(stderr='vom: not found', script='vom file.py')) | ||||
|     assert match(Command(stderr='fucck: not found', script='fucck')) | ||||
|     assert not match(Command(stderr='qweqwe: not found', script='qweqwe')) | ||||
|     assert not match(Command(stderr='some text', script='vom file.py')) | ||||
|  | ||||
|  | ||||
| @pytest.mark.usefixtures('no_memoize') | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command( | ||||
|         Command(stderr='vom: not found', | ||||
|                 script='vom file.py'), | ||||
|         None) == ['vim file.py'] | ||||
|                 script='vom file.py')) == ['vim file.py'] | ||||
|     assert get_new_command( | ||||
|         Command(stderr='fucck: not found', | ||||
|                 script='fucck'), | ||||
|         Command) == ['fsck'] | ||||
|                 script='fucck')) == ['fsck'] | ||||
|   | ||||
| @@ -8,7 +8,7 @@ from tests.utils import Command | ||||
|     Command(script='mv foo bar/', stderr="mv: cannot move 'foo' to 'bar/': No such file or directory"), | ||||
|     ]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -16,7 +16,7 @@ def test_match(command): | ||||
|     Command(script='mv foo bar/foo', stderr="mv: permission denied"), | ||||
|     ]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -24,4 +24,4 @@ def test_not_match(command): | ||||
|     (Command(script='mv foo bar/', stderr="mv: cannot move 'foo' to 'bar/': No such file or directory"), 'mkdir -p bar && mv foo bar/'), | ||||
|     ]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -14,7 +14,7 @@ from tests.utils import Command | ||||
|     Command(script='gnome-open foo.com'), | ||||
|     Command(script='kde-open foo.com')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -28,4 +28,4 @@ def test_match(command): | ||||
|     (Command('gnome-open foo.io'), 'gnome-open http://foo.io'), | ||||
|     (Command('kde-open foo.io'), 'kde-open http://foo.io')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -23,7 +23,7 @@ extra/vim-python3 7.4.712-1 \t/usr/bin/vim''' | ||||
|     Command(script='vim', stderr='vim: command not found'), | ||||
|     Command(script='sudo vim', stderr='sudo: vim: command not found')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, return_value', [ | ||||
| @@ -33,14 +33,14 @@ def test_match(command): | ||||
| @patch.multiple(pacman, create=True, pacman=pacman_cmd) | ||||
| def test_match_mocked(subp_mock, command, return_value): | ||||
|     subp_mock.check_output.return_value = return_value | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
|     Command(script='vim', stderr=''), Command(), | ||||
|     Command(script='sudo vim', stderr=''), Command()]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| sudo_vim_possibilities = ['{} -S extra/gvim && sudo vim', | ||||
| @@ -66,7 +66,7 @@ vim_possibilities = [s.format(pacman_cmd) for s in vim_possibilities] | ||||
|     (Command('convert'), ['{} -S extra/imagemagick && convert'.format(pacman_cmd)]), | ||||
|     (Command('sudo convert'), ['{} -S extra/imagemagick && sudo convert'.format(pacman_cmd)])]) | ||||
| def test_get_new_command(command, new_command, mocker): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command, return_value', [ | ||||
| @@ -79,4 +79,4 @@ def test_get_new_command(command, new_command, mocker): | ||||
| @patch.multiple(pacman, create=True, pacman=pacman_cmd) | ||||
| def test_get_new_command_mocked(subp_mock, command, new_command, return_value): | ||||
|     subp_mock.check_output.return_value = return_value | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -15,7 +15,7 @@ extra/llvm35 3.5.2-13/usr/bin/llc''' | ||||
|     Command(script='pacman llc', stderr='error: target not found: llc'), | ||||
|     Command(script='sudo pacman llc', stderr='error: target not found: llc')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -25,7 +25,7 @@ def test_match(command): | ||||
| @patch('thefuck.specific.archlinux.subprocess') | ||||
| def test_match_mocked(subp_mock, command): | ||||
|     subp_mock.check_output.return_value = PKGFILE_OUTPUT_LLC | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.skipif(not getattr(pacman_not_found, 'enabled_by_default', True), | ||||
| @@ -35,7 +35,7 @@ def test_match_mocked(subp_mock, command): | ||||
|     (Command(script='pacman -S llc', stderr='error: target not found: llc'), ['pacman -S extra/llvm', 'pacman -S extra/llvm35']), | ||||
|     (Command(script='sudo pacman -S llc', stderr='error: target not found: llc'), ['sudo pacman -S extra/llvm', 'sudo pacman -S extra/llvm35'])]) | ||||
| def test_get_new_command(command, fixed): | ||||
|     assert get_new_command(command, None) == fixed | ||||
|     assert get_new_command(command) == fixed | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, fixed', [ | ||||
| @@ -45,4 +45,4 @@ def test_get_new_command(command, fixed): | ||||
| @patch('thefuck.specific.archlinux.subprocess') | ||||
| def test_get_new_command_mocked(subp_mock, command, fixed): | ||||
|     subp_mock.check_output.return_value = PKGFILE_OUTPUT_LLC | ||||
|     assert get_new_command(command, None) == fixed | ||||
|     assert get_new_command(command) == fixed | ||||
|   | ||||
| @@ -14,12 +14,11 @@ def pip_unknown_cmd_without_recommend(): | ||||
|  | ||||
|  | ||||
| def test_match(pip_unknown_cmd, pip_unknown_cmd_without_recommend): | ||||
|     assert match(Command('pip instatl', stderr=pip_unknown_cmd), None) | ||||
|     assert match(Command('pip instatl', stderr=pip_unknown_cmd)) | ||||
|     assert not match(Command('pip i', | ||||
|                              stderr=pip_unknown_cmd_without_recommend), | ||||
|                      None) | ||||
|                              stderr=pip_unknown_cmd_without_recommend)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(pip_unknown_cmd): | ||||
|     assert get_new_command(Command('pip instatl', stderr=pip_unknown_cmd), | ||||
|                            None) == 'pip install' | ||||
|     assert get_new_command(Command('pip instatl', | ||||
|                                    stderr=pip_unknown_cmd)) == 'pip install' | ||||
|   | ||||
| @@ -3,10 +3,10 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('temp.py', stderr='Permission denied'), None) | ||||
|     assert not match(Command(), None) | ||||
|     assert match(Command('temp.py', stderr='Permission denied')) | ||||
|     assert not match(Command()) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command('./test_sudo.py'), None)\ | ||||
|     assert get_new_command(Command('./test_sudo.py'))\ | ||||
|            == 'python ./test_sudo.py' | ||||
|   | ||||
| @@ -7,11 +7,11 @@ from tests.utils import Command | ||||
|     Command(script='python foo'), | ||||
|     Command(script='python bar')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('python foo'), 'python foo.py'), | ||||
|     (Command('python bar'), 'python bar.py')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -8,7 +8,7 @@ from tests.utils import Command | ||||
|     Command(script="git commit -am \"Mismatched Quotation Marks\'"), | ||||
|     Command(script="echo \"hello\'")]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -16,4 +16,4 @@ def test_match(command): | ||||
|     (Command("git commit -am \"Mismatched Quotation Marks\'"), "git commit -am \"Mismatched Quotation Marks\""), | ||||
|     (Command("echo \"hello\'"), "echo \"hello\"")]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -10,7 +10,7 @@ from tests.utils import Command | ||||
|     Command('./bin/hdfs dfs -rm foo', stderr='rm: `foo`: Is a directory') | ||||
|     ]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -19,13 +19,13 @@ def test_match(command): | ||||
|     Command('./bin/hdfs dfs -rm foo'),   | ||||
|     Command()]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command('rm foo'), 'rm -rf foo'), | ||||
|     (Command('hdfs dfs -rm foo'), 'hdfs dfs -rm -r foo')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ from tests.utils import Command | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command(script='rm -rf /', | ||||
|                          stderr='add --no-preserve-root'), None) | ||||
|                          stderr='add --no-preserve-root')) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -13,9 +13,9 @@ def test_match(): | ||||
|     Command(script='rm --no-preserve-root /', stderr='add --no-preserve-root'), | ||||
|     Command(script='rm -rf /', stderr='')]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command(script='rm -rf /'), None) \ | ||||
|     assert get_new_command(Command(script='rm -rf /')) \ | ||||
|            == 'rm -rf / --no-preserve-root' | ||||
|   | ||||
| @@ -9,20 +9,20 @@ def sed_unterminated_s(): | ||||
|  | ||||
|  | ||||
| def test_match(sed_unterminated_s): | ||||
|     assert match(Command('sed -e s/foo/bar', stderr=sed_unterminated_s), None) | ||||
|     assert match(Command('sed -es/foo/bar', stderr=sed_unterminated_s), None) | ||||
|     assert match(Command('sed -e s/foo/bar -e s/baz/quz', stderr=sed_unterminated_s), None) | ||||
|     assert not match(Command('sed -e s/foo/bar'), None) | ||||
|     assert not match(Command('sed -es/foo/bar'), None) | ||||
|     assert not match(Command('sed -e s/foo/bar -e s/baz/quz'), None) | ||||
|     assert match(Command('sed -e s/foo/bar', stderr=sed_unterminated_s)) | ||||
|     assert match(Command('sed -es/foo/bar', stderr=sed_unterminated_s)) | ||||
|     assert match(Command('sed -e s/foo/bar -e s/baz/quz', stderr=sed_unterminated_s)) | ||||
|     assert not match(Command('sed -e s/foo/bar')) | ||||
|     assert not match(Command('sed -es/foo/bar')) | ||||
|     assert not match(Command('sed -e s/foo/bar -e s/baz/quz')) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(sed_unterminated_s): | ||||
|     assert get_new_command(Command('sed -e s/foo/bar', stderr=sed_unterminated_s), None) \ | ||||
|     assert get_new_command(Command('sed -e s/foo/bar', stderr=sed_unterminated_s)) \ | ||||
|             == 'sed -e s/foo/bar/' | ||||
|     assert get_new_command(Command('sed -es/foo/bar', stderr=sed_unterminated_s), None) \ | ||||
|     assert get_new_command(Command('sed -es/foo/bar', stderr=sed_unterminated_s)) \ | ||||
|             == 'sed -es/foo/bar/' | ||||
|     assert get_new_command(Command(r"sed -e 's/\/foo/bar'", stderr=sed_unterminated_s), None) \ | ||||
|     assert get_new_command(Command(r"sed -e 's/\/foo/bar'", stderr=sed_unterminated_s)) \ | ||||
|             == r"sed -e 's/\/foo/bar/'" | ||||
|     assert get_new_command(Command(r"sed -e s/foo/bar -es/baz/quz", stderr=sed_unterminated_s), None) \ | ||||
|     assert get_new_command(Command(r"sed -e s/foo/bar -es/baz/quz", stderr=sed_unterminated_s)) \ | ||||
|             == r"sed -e s/foo/bar/ -es/baz/quz/" | ||||
|   | ||||
| @@ -4,9 +4,9 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('sl'), None) | ||||
|     assert not match(Command('ls'), None) | ||||
|     assert match(Command('sl')) | ||||
|     assert not match(Command('ls')) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command('sl'), None) == 'ls' | ||||
|     assert get_new_command(Command('sl')) == 'ls' | ||||
|   | ||||
| @@ -44,23 +44,23 @@ Host key verification failed.""".format(path, '98.765.432.321') | ||||
|  | ||||
| def test_match(ssh_error): | ||||
|     errormsg, _, _, _ = ssh_error | ||||
|     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) | ||||
|     assert match(Command('ssh', stderr=errormsg)) | ||||
|     assert match(Command('ssh', stderr=errormsg)) | ||||
|     assert match(Command('scp something something', stderr=errormsg)) | ||||
|     assert match(Command('scp something something', stderr=errormsg)) | ||||
|     assert not match(Command(stderr=errormsg)) | ||||
|     assert not match(Command('notssh', stderr=errormsg)) | ||||
|     assert not match(Command('ssh')) | ||||
|  | ||||
|  | ||||
| def test_side_effect(ssh_error): | ||||
|     errormsg, path, reset, known_hosts = ssh_error | ||||
|     command = Command('ssh user@host', stderr=errormsg) | ||||
|     side_effect(command, None, None) | ||||
|     side_effect(command, None) | ||||
|     expected = ['123.234.567.890 asdjkasjdakjsd\n', '111.222.333.444 qwepoiwqepoiss\n'] | ||||
|     assert known_hosts(path) == expected | ||||
|  | ||||
|  | ||||
| def test_get_new_command(ssh_error, monkeypatch): | ||||
|     errormsg, _, _, _ = ssh_error | ||||
|     assert get_new_command(Command('ssh user@host', stderr=errormsg), None) == 'ssh user@host' | ||||
|     assert get_new_command(Command('ssh user@host', stderr=errormsg)) == 'ssh user@host' | ||||
|   | ||||
| @@ -14,11 +14,11 @@ from tests.utils import Command | ||||
|     ('You don\'t have access to the history DB.', ''), | ||||
|     ('', "error: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/ipaddr.py'")]) | ||||
| def test_match(stderr, stdout): | ||||
|     assert match(Command(stderr=stderr, stdout=stdout), None) | ||||
|     assert match(Command(stderr=stderr, stdout=stdout)) | ||||
|  | ||||
|  | ||||
| def test_not_match(): | ||||
|     assert not match(Command(), None) | ||||
|     assert not match(Command()) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('before, after', [ | ||||
| @@ -26,4 +26,4 @@ def test_not_match(): | ||||
|     ('echo a > b', 'sudo sh -c "echo a > b"'), | ||||
|     ('echo "a" >> b', 'sudo sh -c "echo \\"a\\" >> b"')]) | ||||
| def test_get_new_command(before, after): | ||||
|     assert get_new_command(Command(before), None) == after | ||||
|     assert get_new_command(Command(before)) == after | ||||
|   | ||||
| @@ -9,7 +9,7 @@ from tests.utils import Command | ||||
|     Command(stderr='command not found: фзе-пуе', script=u'фзе-пуе'), | ||||
|     Command(stderr='command not found: λσ', script=u'λσ')]) | ||||
| def test_match(command): | ||||
|     assert switch_lang.match(command, None) | ||||
|     assert switch_lang.match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -18,11 +18,11 @@ def test_match(command): | ||||
|     Command(stderr='command not found: агсл', script=u'агсл'), | ||||
|     Command(stderr='some info', script=u'фзе-пуе')]) | ||||
| def test_not_match(command): | ||||
|     assert not switch_lang.match(command, None) | ||||
|     assert not switch_lang.match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
|     (Command(u'фзе-пуе штыефдд мшь'), 'apt-get install vim'), | ||||
|     (Command(u'λσ -λα'), 'ls -la')]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert switch_lang.get_new_command(command, None) == new_command | ||||
|     assert switch_lang.get_new_command(command) == new_command | ||||
|   | ||||
| @@ -4,15 +4,15 @@ from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('systemctl nginx start', stderr='Unknown operation \'nginx\'.'), None) | ||||
|     assert match(Command('sudo systemctl nginx start', stderr='Unknown operation \'nginx\'.'), None) | ||||
|     assert not match(Command('systemctl start nginx'), None) | ||||
|     assert not match(Command('systemctl start nginx'), None) | ||||
|     assert not match(Command('sudo systemctl nginx', stderr='Unknown operation \'nginx\'.'), None) | ||||
|     assert not match(Command('systemctl nginx', stderr='Unknown operation \'nginx\'.'), None) | ||||
|     assert not match(Command('systemctl start wtf', stderr='Failed to start wtf.service: Unit wtf.service failed to load: No such file or directory.'), None) | ||||
|     assert match(Command('systemctl nginx start', stderr='Unknown operation \'nginx\'.')) | ||||
|     assert match(Command('sudo systemctl nginx start', stderr='Unknown operation \'nginx\'.')) | ||||
|     assert not match(Command('systemctl start nginx')) | ||||
|     assert not match(Command('systemctl start nginx')) | ||||
|     assert not match(Command('sudo systemctl nginx', stderr='Unknown operation \'nginx\'.')) | ||||
|     assert not match(Command('systemctl nginx', stderr='Unknown operation \'nginx\'.')) | ||||
|     assert not match(Command('systemctl start wtf', stderr='Failed to start wtf.service: Unit wtf.service failed to load: No such file or directory.')) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command('systemctl nginx start'), None) == "systemctl start nginx" | ||||
|     assert get_new_command(Command('sudo systemctl nginx start'), None) == "sudo systemctl start nginx" | ||||
|     assert get_new_command(Command('systemctl nginx start')) == "systemctl start nginx" | ||||
|     assert get_new_command(Command('sudo systemctl nginx start')) == "sudo systemctl start nginx" | ||||
|   | ||||
| @@ -11,9 +11,9 @@ def tmux_ambiguous(): | ||||
|  | ||||
|  | ||||
| def test_match(tmux_ambiguous): | ||||
|     assert match(Command('tmux list', stderr=tmux_ambiguous), None) | ||||
|     assert match(Command('tmux list', stderr=tmux_ambiguous)) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(tmux_ambiguous): | ||||
|     assert get_new_command(Command('tmux list', stderr=tmux_ambiguous), None)\ | ||||
|     assert get_new_command(Command('tmux list', stderr=tmux_ambiguous))\ | ||||
|         == ['tmux list-keys', 'tmux list-panes', 'tmux list-windows'] | ||||
|   | ||||
| @@ -15,7 +15,7 @@ error_msg = ( | ||||
|     Command(script='tsuru app-log -f', stderr=error_msg[1]), | ||||
| ]) | ||||
| def test_match(command): | ||||
|     assert match(command, {}) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -24,7 +24,7 @@ def test_match(command): | ||||
|     Command(script='tsuru app-log -f', stderr=('Error: unparseable data')), | ||||
| ]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, {}) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -34,4 +34,4 @@ def test_not_match(command): | ||||
|      'tsuru login && tsuru app-log -f'), | ||||
| ]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, {}) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -30,7 +30,7 @@ from thefuck.rules.tsuru_not_command import match, get_new_command | ||||
|     )), | ||||
| ]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -58,7 +58,7 @@ def test_match(command): | ||||
|     Command('tsuru env-get', stderr='Error: App thefuck not found.'), | ||||
| ]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_commands', [ | ||||
| @@ -87,4 +87,4 @@ def test_not_match(command): | ||||
|     )), ['tsuru target-list']), | ||||
| ]) | ||||
| def test_get_new_command(command, new_commands): | ||||
|     assert get_new_command(command, None) == new_commands | ||||
|     assert get_new_command(command) == new_commands | ||||
|   | ||||
| @@ -9,7 +9,7 @@ from tests.utils import Command | ||||
|             stderr='ls: Unknown command\nDid you mean -ls?  This command begins with a dash.'), | ||||
|     Command(script='hdfs dfs ls /foo/bar', stderr='ls: Unknown command\nDid you mean -ls?  This command begins with a dash.')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -18,7 +18,7 @@ def test_match(command): | ||||
|     Command(script='hdfs dfs -ls -R /foo/bar', stderr=''),   | ||||
|     Command()]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -31,5 +31,5 @@ def test_not_match(command): | ||||
|     (Command('./bin/hdfs dfs -Dtest=fred ls -R /foo/bar', | ||||
|         stderr='ls: Unknown command\nDid you mean -ls?  This command begins with a dash.'), ['./bin/hdfs dfs -Dtest=fred -ls -R /foo/bar'])]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|   | ||||
| @@ -11,7 +11,7 @@ from tests.utils import Command | ||||
|     Command(script='vagrant rdp devbox', | ||||
|             stderr='VM must be created before running this command. Run `vagrant up` first.')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command', [ | ||||
| @@ -20,7 +20,7 @@ def test_match(command): | ||||
|     Command(script='vagrant ssh', stderr='A Vagrant environment or target machine is required to run this command. Run `vagrant init` to create a new Vagrant environment. Or, get an ID of a target machine from `vagrant global-status` to run this command on. A final option is to change to a directory with a Vagrantfile and to try again.'),   | ||||
|     Command()]) | ||||
| def test_not_match(command): | ||||
|     assert not match(command, None) | ||||
|     assert not match(command) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, new_command', [ | ||||
| @@ -31,5 +31,5 @@ def test_not_match(command): | ||||
|     (Command(script='vagrant rdp devbox', | ||||
|             stderr='VM must be created before running this command. Run `vagrant up` first.'), ['vagrant up devbox && vagrant rdp devbox', 'vagrant up && vagrant rdp devbox'])]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|  | ||||
|   | ||||
| @@ -8,11 +8,11 @@ from tests.utils import Command | ||||
|     Command(script='whois https://en.wikipedia.org/'), | ||||
|     Command(script='whois meta.unix.stackexchange.com')]) | ||||
| def test_match(command): | ||||
|     assert match(command, None) | ||||
|     assert match(command) | ||||
|  | ||||
|  | ||||
| def test_not_match(): | ||||
|     assert not match(Command(script='whois'), None) | ||||
|     assert not match(Command(script='whois')) | ||||
|  | ||||
|  | ||||
| # `whois com` actually makes sense | ||||
| @@ -23,4 +23,4 @@ def test_not_match(): | ||||
|                                                     'whois stackexchange.com', | ||||
|                                                     'whois com'])]) | ||||
| def test_get_new_command(command, new_command): | ||||
|     assert get_new_command(command, None) == new_command | ||||
|     assert get_new_command(command) == new_command | ||||
|   | ||||
| @@ -9,9 +9,10 @@ from tests.utils import Command | ||||
|      "19:23:25.470911 git.c:282   trace: alias expansion: com => 'commit' '--verbose'")]) | ||||
| def test_git_support(called, command, stderr): | ||||
|     @git_support | ||||
|     def fn(command, settings): return command.script | ||||
|     def fn(command): | ||||
|         return command.script | ||||
|  | ||||
|     assert fn(Command(script=called, stderr=stderr), None) == command | ||||
|     assert fn(Command(script=called, stderr=stderr)) == command | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('command, is_git', [ | ||||
| @@ -24,6 +25,7 @@ def test_git_support(called, command, stderr): | ||||
|     ('cat hub', False)]) | ||||
| def test_git_support_match(command, is_git): | ||||
|     @git_support | ||||
|     def fn(command, settings): return True | ||||
|     def fn(command): | ||||
|         return True | ||||
|  | ||||
|     assert fn(Command(script=command), None) == is_git | ||||
|     assert fn(Command(script=command)) == is_git | ||||
|   | ||||
| @@ -13,8 +13,8 @@ from tests.utils import Command | ||||
|     (False, 'sudo ls', 'ls', False), | ||||
|     (False, 'ls', 'ls', False)]) | ||||
| def test_sudo_support(return_value, command, called, result): | ||||
|     def fn(command, settings): | ||||
|     def fn(command): | ||||
|         assert command == Command(called) | ||||
|         return return_value | ||||
|  | ||||
|     assert sudo_support(fn)(Command(command), None) == result | ||||
|     assert sudo_support(fn)(Command(command)) == result | ||||
|   | ||||
| @@ -61,10 +61,10 @@ class TestGetRules(object): | ||||
| class TestIsRuleMatch(object): | ||||
|     def test_no_match(self): | ||||
|         assert not corrector.is_rule_match( | ||||
|             Command('ls'), Rule('', lambda *_: False)) | ||||
|             Command('ls'), Rule('', lambda _: False)) | ||||
|  | ||||
|     def test_match(self): | ||||
|         rule = Rule('', lambda x, _: x.script == 'cd ..') | ||||
|         rule = Rule('', lambda x: x.script == 'cd ..') | ||||
|         assert corrector.is_rule_match(Command('cd ..'), rule) | ||||
|  | ||||
|     @pytest.mark.usefixtures('no_colors') | ||||
| @@ -77,25 +77,25 @@ class TestIsRuleMatch(object): | ||||
|  | ||||
| class TestMakeCorrectedCommands(object): | ||||
|     def test_with_rule_returns_list(self): | ||||
|         rule = Rule(get_new_command=lambda x, _: [x.script + '!', x.script + '@'], | ||||
|         rule = Rule(get_new_command=lambda x: [x.script + '!', x.script + '@'], | ||||
|                     priority=100) | ||||
|         assert list(make_corrected_commands(Command(script='test'), rule)) \ | ||||
|                == [CorrectedCommand(script='test!', priority=100), | ||||
|                    CorrectedCommand(script='test@', priority=200)] | ||||
|  | ||||
|     def test_with_rule_returns_command(self): | ||||
|         rule = Rule(get_new_command=lambda x, _: x.script + '!', | ||||
|         rule = Rule(get_new_command=lambda x: x.script + '!', | ||||
|                     priority=100) | ||||
|         assert list(make_corrected_commands(Command(script='test'), rule)) \ | ||||
|                == [CorrectedCommand(script='test!', priority=100)] | ||||
|  | ||||
| def test_get_corrected_commands(mocker): | ||||
|     command = Command('test', 'test', 'test') | ||||
|     rules = [Rule(match=lambda *_: False), | ||||
|              Rule(match=lambda *_: True, | ||||
|                   get_new_command=lambda x, _: x.script + '!', priority=100), | ||||
|              Rule(match=lambda *_: True, | ||||
|                   get_new_command=lambda x, _: [x.script + '@', x.script + ';'], | ||||
|     rules = [Rule(match=lambda _: False), | ||||
|              Rule(match=lambda _: True, | ||||
|                   get_new_command=lambda x: x.script + '!', priority=100), | ||||
|              Rule(match=lambda _: True, | ||||
|                   get_new_command=lambda x: [x.script + '@', x.script + ';'], | ||||
|                   priority=60)] | ||||
|     mocker.patch('thefuck.corrector.get_rules', return_value=rules) | ||||
|     assert [cmd.script for cmd in get_corrected_commands(command, None)] \ | ||||
|   | ||||
| @@ -3,8 +3,7 @@ from mock import Mock | ||||
| import six | ||||
| from thefuck.utils import default_settings, \ | ||||
|     memoize, get_closest, get_all_executables, replace_argument, \ | ||||
|     get_all_matched_commands, is_app, for_app, cache | ||||
| from thefuck.types import Settings | ||||
|     get_all_matched_commands, is_app, for_app, cache, compatibility_call | ||||
| from tests.utils import Command | ||||
|  | ||||
|  | ||||
| @@ -12,9 +11,12 @@ from tests.utils import Command | ||||
|     ({'key': 'val'}, {}, {'key': 'val'}), | ||||
|     ({'key': 'new-val'}, {'key': 'val'}, {'key': 'val'}), | ||||
|     ({'key': 'new-val', 'unset': 'unset'}, {'key': 'val'}, {'key': 'val', 'unset': 'unset'})]) | ||||
| def test_default_settings(override, old, new): | ||||
|     fn = lambda _, settings: settings | ||||
|     assert default_settings(override)(fn)(None, Settings(old)) == new | ||||
| def test_default_settings(settings, override, old, new): | ||||
|     settings.clear() | ||||
|     settings.update(old) | ||||
|     fn = lambda _: _ | ||||
|     default_settings(override)(fn)(None) | ||||
|     assert settings == new | ||||
|  | ||||
|  | ||||
| def test_memoize(): | ||||
| @@ -112,10 +114,10 @@ def test_is_app(script, names, result): | ||||
|     ('hg diff', ['git', 'hub'], False)]) | ||||
| def test_for_app(script, names, result): | ||||
|     @for_app(*names) | ||||
|     def match(command, settings): | ||||
|     def match(command): | ||||
|         return True | ||||
|  | ||||
|     assert match(Command(script), None) == result | ||||
|     assert match(Command(script)) == result | ||||
|  | ||||
|  | ||||
| class TestCache(object): | ||||
| @@ -180,3 +182,50 @@ class TestCache(object): | ||||
|         shelve.update({key: {'etag': '-1', 'value': 'old-value'}}) | ||||
|         assert fn() == 'test' | ||||
|         assert shelve == {key: {'etag': '0', 'value': 'test'}} | ||||
|  | ||||
|  | ||||
| class TestCompatibilityCall(object): | ||||
|     def test_match(self): | ||||
|         def match(command): | ||||
|             assert command == Command() | ||||
|             return True | ||||
|  | ||||
|         assert compatibility_call(match, Command()) | ||||
|  | ||||
|     def test_old_match(self, settings): | ||||
|         def match(command, _settings): | ||||
|             assert command == Command() | ||||
|             assert settings == _settings | ||||
|             return True | ||||
|  | ||||
|         assert compatibility_call(match, Command()) | ||||
|  | ||||
|     def test_get_new_command(self): | ||||
|         def get_new_command(command): | ||||
|             assert command == Command() | ||||
|             return True | ||||
|  | ||||
|         assert compatibility_call(get_new_command, Command()) | ||||
|  | ||||
|     def test_old_get_new_command(self, settings): | ||||
|         def get_new_command(command, _settings): | ||||
|             assert command == Command() | ||||
|             assert settings == _settings | ||||
|             return True | ||||
|  | ||||
|         assert compatibility_call(get_new_command, Command()) | ||||
|  | ||||
|     def test_side_effect(self): | ||||
|         def side_effect(command, new_command): | ||||
|             assert command == Command() == new_command | ||||
|             return True | ||||
|  | ||||
|         assert compatibility_call(side_effect, Command(), Command()) | ||||
|  | ||||
|     def test_old_side_effect(self, settings): | ||||
|         def side_effect(command, new_command, _settings): | ||||
|             assert command == Command() == new_command | ||||
|             assert settings == _settings | ||||
|             return True | ||||
|  | ||||
|         assert compatibility_call(side_effect, Command(), Command()) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user