diff --git a/tests/rules/test_dirty_unzip.py b/tests/rules/test_dirty_unzip.py new file mode 100644 index 00000000..18d34f0d --- /dev/null +++ b/tests/rules/test_dirty_unzip.py @@ -0,0 +1,45 @@ +import os +import pytest +import zipfile +from thefuck.rules.dirty_unzip import match, get_new_command, side_effect +from tests.utils import Command + + +@pytest.fixture +def zip_error(tmpdir): + path = os.path.join(str(tmpdir), 'foo.zip') + + def reset(path): + with zipfile.ZipFile(path, 'w') as archive: + archive.writestr('a', '1') + archive.writestr('b', '2') + archive.writestr('c', '3') + + archive.extractall() + + os.chdir(str(tmpdir)) + reset(path) + + assert(set(os.listdir('.')) == {'foo.zip', 'a', 'b', 'c'}) + + +@pytest.mark.parametrize('script', [ + 'unzip foo', + 'unzip foo.zip']) +def test_match(zip_error, script): + assert match(Command(script=script), None) + + +@pytest.mark.parametrize('script', [ + 'unzip foo', + 'unzip foo.zip']) +def test_side_effect(zip_error, script): + side_effect(Command(script=script), None) + assert(os.listdir('.') == ['foo.zip']) + + +@pytest.mark.parametrize('script,fixed', [ + ('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