44import secrets
55from collections .abc import AsyncIterable
66from pathlib import Path
7- from typing import TypeAlias
87from unittest .mock import Mock
98
10- import aiofiles
119import pytest
1210from faker import Faker
1311from pytest_mock import MockerFixture
12+ from pytest_simcore .helpers .comparing import (
13+ assert_same_folder_contents ,
14+ get_files_in_folder ,
15+ get_relative_to ,
16+ )
1417from servicelib .archiving_utils import unarchive_dir
15- from servicelib .file_utils import create_sha256_checksum , remove_directory
18+ from servicelib .file_utils import remove_directory
1619from servicelib .progress_bar import ProgressBarData
1720from servicelib .zip_stream import (
1821 ArchiveEntries ,
@@ -74,33 +77,6 @@ def _generate_files_in_path(faker: Faker, base_dir: Path, *, prefix: str = "") -
7477 (base_dir / "fancy-names" / fancy_name ).write_text (faker .text ())
7578
7679
77- _FilesInFolder : TypeAlias = dict [str , Path ]
78-
79-
80- def _get_relative (folder : Path , file : Path ) -> str :
81- return f"{ file .relative_to (folder )} "
82-
83-
84- def _get_files_in_folder (folder : Path ) -> _FilesInFolder :
85- return {_get_relative (folder , f ): f for f in folder .rglob ("*" ) if f .is_file ()}
86-
87-
88- async def _same_file_content (file_1 : Path , file_2 : Path ):
89- async with aiofiles .open (file_1 , "rb" ) as f1 , aiofiles .open (file_2 , "rb" ) as f2 :
90- checksum_1 = await create_sha256_checksum (f1 )
91- checksum_2 = await create_sha256_checksum (f2 )
92- assert checksum_1 == checksum_2
93-
94-
95- async def _assert_same_folder_contents (
96- fif1 : _FilesInFolder , fif2 : _FilesInFolder
97- ) -> None :
98- assert set (fif1 .keys ()) == set (fif2 .keys ())
99-
100- for file_name in fif1 :
101- await _same_file_content (fif1 [file_name ], fif2 [file_name ])
102-
103-
10480@pytest .fixture
10581async def prepare_content (local_files_dir : Path , faker : Faker ) -> AsyncIterable [None ]:
10682 _generate_files_in_path (faker , local_files_dir , prefix = "local_" )
@@ -126,7 +102,7 @@ async def test_get_zip_archive_stream(
126102 # 1. generate archive form soruces
127103 archive_files : ArchiveEntries = []
128104 for file in (x for x in local_files_dir .rglob ("*" ) if x .is_file ()):
129- archive_name = _get_relative (local_files_dir , file )
105+ archive_name = get_relative_to (local_files_dir , file )
130106
131107 archive_files .append ((archive_name , DiskStreamReader (file ).get_stream ))
132108
@@ -145,7 +121,7 @@ async def test_get_zip_archive_stream(
145121 await unarchive_dir (local_archive_path , local_unpacked_archive )
146122
147123 # 3. compare files in directories (same paths & sizes)
148- await _assert_same_folder_contents (
149- _get_files_in_folder (local_files_dir ),
150- _get_files_in_folder (local_unpacked_archive ),
124+ await assert_same_folder_contents (
125+ get_files_in_folder (local_files_dir ),
126+ get_files_in_folder (local_unpacked_archive ),
151127 )
0 commit comments