1
0
mirror of https://github.com/nvbn/thefuck.git synced 2025-04-15 15:20:42 +01:00

Merge pull request #365 from mcarton/fix-unzip

Fix #363
This commit is contained in:
Vladimir Iakovlev 2015-09-07 23:36:13 +03:00
commit 122541b7d8
4 changed files with 23 additions and 8 deletions

View File

@ -11,8 +11,9 @@ def tar_error(tmpdir):
path = os.path.join(str(tmpdir), filename) path = os.path.join(str(tmpdir), filename)
def reset(path): def reset(path):
os.mkdir('d')
with tarfile.TarFile(path, 'w') as archive: with tarfile.TarFile(path, 'w') as archive:
for file in ('a', 'b', 'c'): for file in ('a', 'b', 'c', 'd/e'):
with open(file, 'w') as f: with open(file, 'w') as f:
f.write('*') f.write('*')
@ -26,7 +27,8 @@ def tar_error(tmpdir):
os.chdir(str(tmpdir)) os.chdir(str(tmpdir))
reset(path) reset(path)
assert(set(os.listdir('.')) == {filename, 'a', 'b', 'c'}) assert set(os.listdir('.')) == {filename, 'a', 'b', 'c', 'd'}
assert set(os.listdir('./d')) == {'e'}
return fixture return fixture
@ -53,7 +55,7 @@ def test_match(tar_error, filename, script, fixed):
def test_side_effect(tar_error, filename, script, fixed): def test_side_effect(tar_error, filename, script, fixed):
tar_error(filename) tar_error(filename)
side_effect(Command(script=script.format(filename)), None) side_effect(Command(script=script.format(filename)), None)
assert(os.listdir('.') == [filename]) assert set(os.listdir('.')) == {filename, 'd'}
@parametrize_filename @parametrize_filename

View File

@ -15,12 +15,15 @@ def zip_error(tmpdir):
archive.writestr('b', '2') archive.writestr('b', '2')
archive.writestr('c', '3') archive.writestr('c', '3')
archive.writestr('d/e', '4')
archive.extractall() archive.extractall()
os.chdir(str(tmpdir)) os.chdir(str(tmpdir))
reset(path) reset(path)
assert(set(os.listdir('.')) == {'foo.zip', 'a', 'b', 'c'}) assert set(os.listdir('.')) == {'foo.zip', 'a', 'b', 'c', 'd'}
assert set(os.listdir('./d')) == {'e'}
@pytest.mark.parametrize('script', [ @pytest.mark.parametrize('script', [
@ -35,7 +38,7 @@ def test_match(zip_error, script):
'unzip foo.zip']) 'unzip foo.zip'])
def test_side_effect(zip_error, script): def test_side_effect(zip_error, script):
side_effect(Command(script=script), None) side_effect(Command(script=script), None)
assert(os.listdir('.') == ['foo.zip']) assert set(os.listdir('.')) == {'foo.zip', 'd'}
@pytest.mark.parametrize('script,fixed', [ @pytest.mark.parametrize('script,fixed', [

View File

@ -1,5 +1,5 @@
import os
import tarfile import tarfile
import os
from thefuck import shells from thefuck import shells
from thefuck.utils import for_app from thefuck.utils import for_app
@ -39,4 +39,9 @@ def get_new_command(command):
def side_effect(old_cmd, command): def side_effect(old_cmd, command):
with tarfile.TarFile(_tar_file(old_cmd.script)[0]) as archive: with tarfile.TarFile(_tar_file(old_cmd.script)[0]) as archive:
for file in archive.getnames(): for file in archive.getnames():
os.remove(file) try:
os.remove(file)
except OSError:
# does not try to remove directories as we cannot know if they
# already existed before
pass

View File

@ -34,7 +34,12 @@ def get_new_command(command):
def side_effect(old_cmd, command): def side_effect(old_cmd, command):
with zipfile.ZipFile(_zip_file(old_cmd), 'r') as archive: with zipfile.ZipFile(_zip_file(old_cmd), 'r') as archive:
for file in archive.namelist(): for file in archive.namelist():
os.remove(file) try:
os.remove(file)
except OSError:
# does not try to remove directories as we cannot know if they
# already existed before
pass
requires_output = False requires_output = False