mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-31 15:12:20 +00:00 
			
		
		
		
	| @@ -3,4 +3,4 @@ import pytest | ||||
|  | ||||
| @pytest.fixture(autouse=True) | ||||
| def generic_shell(monkeypatch): | ||||
|     monkeypatch.setattr('thefuck.shells.and_', lambda *x: ' && '.join(x)) | ||||
|     monkeypatch.setattr('thefuck.shells.and_', lambda *x: u' && '.join(x)) | ||||
|   | ||||
| @@ -1,50 +1,72 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| import os | ||||
| import pytest | ||||
| import zipfile | ||||
| from thefuck.rules.dirty_unzip import match, get_new_command, side_effect | ||||
| from tests.utils import Command | ||||
| from unicodedata import normalize | ||||
|  | ||||
|  | ||||
| @pytest.fixture | ||||
| def zip_error(tmpdir): | ||||
|     path = os.path.join(str(tmpdir), 'foo.zip') | ||||
|     def zip_error_inner(filename): | ||||
|         path = os.path.join(str(tmpdir), filename) | ||||
|  | ||||
|     def reset(path): | ||||
|         with zipfile.ZipFile(path, 'w') as archive: | ||||
|             archive.writestr('a', '1') | ||||
|             archive.writestr('b', '2') | ||||
|             archive.writestr('c', '3') | ||||
|         def reset(path): | ||||
|             with zipfile.ZipFile(path, 'w') as archive: | ||||
|                 archive.writestr('a', '1') | ||||
|                 archive.writestr('b', '2') | ||||
|                 archive.writestr('c', '3') | ||||
|  | ||||
|             archive.writestr('d/e', '4') | ||||
|                 archive.writestr('d/e', '4') | ||||
|  | ||||
|             archive.extractall() | ||||
|                 archive.extractall() | ||||
|  | ||||
|     os.chdir(str(tmpdir)) | ||||
|     reset(path) | ||||
|         os.chdir(str(tmpdir)) | ||||
|         reset(path) | ||||
|  | ||||
|     assert set(os.listdir('.')) == {'foo.zip', 'a', 'b', 'c', 'd'} | ||||
|     assert set(os.listdir('./d')) == {'e'} | ||||
|         dir_list = os.listdir(u'.') | ||||
|         if filename not in dir_list: | ||||
|             filename = normalize('NFD', filename) | ||||
|  | ||||
|         assert set(dir_list) == {filename, 'a', 'b', 'c', 'd'} | ||||
|         assert set(os.listdir('./d')) == {'e'} | ||||
|     return zip_error_inner | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script', [ | ||||
|     'unzip foo', | ||||
|     'unzip foo.zip']) | ||||
| def test_match(zip_error, script): | ||||
| @pytest.mark.parametrize('script,filename', [ | ||||
|     (u'unzip café', u'café.zip'), | ||||
|     (u'unzip café.zip', u'café.zip'), | ||||
|     (u'unzip foo', u'foo.zip'), | ||||
|     (u'unzip foo.zip', u'foo.zip')]) | ||||
| def test_match(zip_error, script, filename): | ||||
|     zip_error(filename) | ||||
|     assert match(Command(script=script)) | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script', [ | ||||
|     'unzip foo', | ||||
|     'unzip foo.zip']) | ||||
| def test_side_effect(zip_error, script): | ||||
| @pytest.mark.parametrize('script,filename', [ | ||||
|     (u'unzip café', u'café.zip'), | ||||
|     (u'unzip café.zip', u'café.zip'), | ||||
|     (u'unzip foo', u'foo.zip'), | ||||
|     (u'unzip foo.zip', u'foo.zip')]) | ||||
| def test_side_effect(zip_error, script, filename): | ||||
|     zip_error(filename) | ||||
|     side_effect(Command(script=script), None) | ||||
|     assert set(os.listdir('.')) == {'foo.zip', 'd'} | ||||
|  | ||||
|     dir_list = os.listdir(u'.') | ||||
|     if filename not in set(dir_list): | ||||
|         filename = normalize('NFD', filename) | ||||
|  | ||||
|     assert set(dir_list) == {filename, 'd'} | ||||
|  | ||||
|  | ||||
| @pytest.mark.parametrize('script,fixed', [ | ||||
|     ('unzip foo', 'unzip foo -d foo'), | ||||
|     (R"unzip foo\ bar.zip", R"unzip foo\ bar.zip -d 'foo bar'"), | ||||
|     (R"unzip 'foo bar.zip'", R"unzip 'foo bar.zip' -d 'foo bar'"), | ||||
|     ('unzip foo.zip', 'unzip foo.zip -d foo')]) | ||||
| def test_get_new_command(zip_error, script, fixed): | ||||
| @pytest.mark.parametrize('script,fixed,filename', [ | ||||
|     (u'unzip café', u"unzip café -d 'café'", u'café.zip'), | ||||
|     (u'unzip foo', u'unzip foo -d foo', u'foo.zip'), | ||||
|     (u"unzip foo\\ bar.zip", u"unzip foo\\ bar.zip -d 'foo bar'", u'foo.zip'), | ||||
|     (u"unzip 'foo bar.zip'", u"unzip 'foo bar.zip' -d 'foo bar'", u'foo.zip'), | ||||
|     (u'unzip foo.zip', u'unzip foo.zip -d foo', u'foo.zip')]) | ||||
| def test_get_new_command(zip_error, script, fixed, filename): | ||||
|     zip_error(filename) | ||||
|     assert get_new_command(Command(script=script)) == fixed | ||||
|   | ||||
| @@ -1,3 +1,5 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| import pytest | ||||
| import os | ||||
| from thefuck.rules.fix_file import match, get_new_command | ||||
| @@ -87,6 +89,20 @@ Traceback (most recent call last): | ||||
| TypeError: first argument must be string or compiled pattern | ||||
| """), | ||||
|  | ||||
| (u'python café.py', u'café.py', 8, None, '', | ||||
| u""" | ||||
| Traceback (most recent call last): | ||||
|   File "café.py", line 8, in <module> | ||||
|     match("foo") | ||||
|   File "café.py", line 5, in match | ||||
|     m = re.search(None, command) | ||||
|   File "/usr/lib/python3.4/re.py", line 170, in search | ||||
|     return _compile(pattern, flags).search(string) | ||||
|   File "/usr/lib/python3.4/re.py", line 293, in _compile | ||||
|     raise TypeError("first argument must be string or compiled pattern") | ||||
| TypeError: first argument must be string or compiled pattern | ||||
| """), | ||||
|  | ||||
| ('ruby a.rb', 'a.rb', 3, None, '', | ||||
| """ | ||||
| a.rb:3: syntax error, unexpected keyword_end | ||||
| @@ -227,7 +243,7 @@ def test_get_new_command_with_settings(mocker, monkeypatch, test, settings): | ||||
|  | ||||
|     if test[3]: | ||||
|         assert (get_new_command(cmd) == | ||||
|             'dummy_editor {} +{}:{} && {}'.format(test[1], test[2], test[3], test[0])) | ||||
|             u'dummy_editor {} +{}:{} && {}'.format(test[1], test[2], test[3], test[0])) | ||||
|     else: | ||||
|         assert (get_new_command(cmd) == | ||||
|             'dummy_editor {} +{} && {}'.format(test[1], test[2], test[0])) | ||||
|             u'dummy_editor {} +{} && {}'.format(test[1], test[2], test[0])) | ||||
|   | ||||
| @@ -1,11 +1,15 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| from thefuck.rules.grep_recursive import match, get_new_command | ||||
| from tests.utils import Command | ||||
|  | ||||
|  | ||||
| def test_match(): | ||||
|     assert match(Command('grep blah .', stderr='grep: .: Is a directory')) | ||||
|     assert match(Command(u'grep café .', stderr='grep: .: Is a directory')) | ||||
|     assert not match(Command()) | ||||
|  | ||||
|  | ||||
| def test_get_new_command(): | ||||
|     assert get_new_command(Command('grep blah .')) == 'grep -r blah .' | ||||
|     assert get_new_command(Command(u'grep café .')) == u'grep -r café .' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user