mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			54 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | """
 | ||
|  | Generate the zip test data files. | ||
|  | 
 | ||
|  | Run to build the tests/zipdataNN/ziptestdata.zip files from | ||
|  | files in tests/dataNN. | ||
|  | 
 | ||
|  | Replaces the file with the working copy, but does commit anything | ||
|  | to the source repo. | ||
|  | """
 | ||
|  | 
 | ||
|  | import contextlib | ||
|  | import os | ||
|  | import pathlib | ||
|  | import zipfile | ||
|  | 
 | ||
|  | 
 | ||
|  | def main(): | ||
|  |     """
 | ||
|  |     >>> from unittest import mock | ||
|  |     >>> monkeypatch = getfixture('monkeypatch') | ||
|  |     >>> monkeypatch.setattr(zipfile, 'ZipFile', mock.MagicMock()) | ||
|  |     >>> print(); main()  # print workaround for bpo-32509 | ||
|  |     <BLANKLINE> | ||
|  |     ...data01... -> ziptestdata/... | ||
|  |     ... | ||
|  |     ...data02... -> ziptestdata/... | ||
|  |     ... | ||
|  |     """
 | ||
|  |     suffixes = '01', '02' | ||
|  |     tuple(map(generate, suffixes)) | ||
|  | 
 | ||
|  | 
 | ||
|  | def generate(suffix): | ||
|  |     root = pathlib.Path(__file__).parent.relative_to(os.getcwd()) | ||
|  |     zfpath = root / f'zipdata{suffix}/ziptestdata.zip' | ||
|  |     with zipfile.ZipFile(zfpath, 'w') as zf: | ||
|  |         for src, rel in walk(root / f'data{suffix}'): | ||
|  |             dst = 'ziptestdata' / pathlib.PurePosixPath(rel.as_posix()) | ||
|  |             print(src, '->', dst) | ||
|  |             zf.write(src, dst) | ||
|  | 
 | ||
|  | 
 | ||
|  | def walk(datapath): | ||
|  |     for dirpath, dirnames, filenames in os.walk(datapath): | ||
|  |         with contextlib.suppress(KeyError): | ||
|  |             dirnames.remove('__pycache__') | ||
|  |         for filename in filenames: | ||
|  |             res = pathlib.Path(dirpath) / filename | ||
|  |             rel = res.relative_to(datapath) | ||
|  |             yield res, rel | ||
|  | 
 | ||
|  | 
 | ||
|  | __name__ == '__main__' and main() |