mirror of
				https://github.com/nvbn/thefuck.git
				synced 2025-10-30 22:54:14 +00:00 
			
		
		
		
	Add tests for the dirty_untar rule
				
					
				
			This commit is contained in:
		
							
								
								
									
										62
									
								
								tests/rules/test_dirty_untar.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								tests/rules/test_dirty_untar.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| import os | ||||
| import pytest | ||||
| import tarfile | ||||
| from thefuck.rules.dirty_untar import match, get_new_command, side_effect | ||||
| from tests.utils import Command | ||||
|  | ||||
|  | ||||
| @pytest.fixture | ||||
| def tar_error(tmpdir): | ||||
|     def fixture(filename): | ||||
|         path = os.path.join(str(tmpdir), filename) | ||||
|  | ||||
|         def reset(path): | ||||
|             with tarfile.TarFile(path, 'w') as archive: | ||||
|                 for file in ('a', 'b', 'c'): | ||||
|                     with open(file, 'w') as f: | ||||
|                         f.write('*') | ||||
|  | ||||
|                     archive.add(file) | ||||
|  | ||||
|                     os.remove(file) | ||||
|  | ||||
|             with tarfile.TarFile(path, 'r') as archive: | ||||
|                 archive.extractall() | ||||
|  | ||||
|         os.chdir(str(tmpdir)) | ||||
|         reset(path) | ||||
|  | ||||
|         assert(set(os.listdir('.')) == {filename, 'a', 'b', 'c'}) | ||||
|  | ||||
|     return fixture | ||||
|  | ||||
| parametrize_filename = pytest.mark.parametrize('filename', [ | ||||
|     'foo.tar', | ||||
|     'foo.tar.gz', | ||||
|     'foo.tgz']) | ||||
|  | ||||
| parametrize_script = pytest.mark.parametrize('script, fixed', [ | ||||
|     ('tar xvf {}', 'mkdir -p foo && tar xvf {} -C foo'), | ||||
|     ('tar -xvf {}', 'mkdir -p foo && tar -xvf {} -C foo'), | ||||
|     ('tar --extract -f {}', 'mkdir -p foo && tar --extract -f {} -C foo')]) | ||||
|  | ||||
| @parametrize_filename | ||||
| @parametrize_script | ||||
| def test_match(tar_error, filename, script, fixed): | ||||
|     tar_error(filename) | ||||
|     assert match(Command(script=script.format(filename)), None) | ||||
|  | ||||
|  | ||||
| @parametrize_filename | ||||
| @parametrize_script | ||||
| def test_side_effect(tar_error, filename, script, fixed): | ||||
|     tar_error(filename) | ||||
|     side_effect(Command(script=script.format(filename)), None) | ||||
|     assert(os.listdir('.') == [filename]) | ||||
|  | ||||
|  | ||||
| @parametrize_filename | ||||
| @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) | ||||
		Reference in New Issue
	
	Block a user