lang-main/tests/test_search.py
2024-11-26 16:11:25 +01:00

65 lines
1.9 KiB
Python

from pathlib import Path
import pytest
from lang_main import search
FILE_SEARCH = 'test.txt'
@pytest.fixture(scope='module')
def base_folder(tmp_path_factory) -> Path:
folder_structure = 'path/to/base/folder/'
pth = tmp_path_factory.mktemp('search')
pth = pth / folder_structure
pth.mkdir(parents=True, exist_ok=True)
return pth
@pytest.fixture(scope='module')
def target_file_pth(base_folder) -> Path:
# place in folder 'path' of TMP path
target_folder = base_folder.parents[2]
target_file = target_folder / FILE_SEARCH
with open(target_file, 'w') as file:
file.write('TEST')
return target_file
def test_search_base_path(base_folder):
stop_folder = '123' # should not exist
found = search.search_base_path(base_folder, stop_folder_name=stop_folder)
assert found is None
stop_folder = 'to'
found = search.search_base_path(base_folder, stop_folder_name=stop_folder)
assert found is not None
assert found.name == 'path'
@pytest.mark.parametrize('stop_folder_name', ['to', 'base', None])
def test_search_iterative(base_folder, target_file_pth, stop_folder_name):
# target in parent of 'to': 'path'
ret = search.search_iterative(base_folder, FILE_SEARCH, stop_folder_name)
if stop_folder_name == 'to' or stop_folder_name is None:
assert ret is not None
assert ret.name == FILE_SEARCH
assert ret == target_file_pth
elif stop_folder_name == 'base':
assert ret is None
def test_search_cwd(monkeypatch, base_folder, target_file_pth):
monkeypatch.setattr(Path, 'cwd', lambda: base_folder)
assert Path.cwd() == base_folder
ret = search.search_cwd(FILE_SEARCH)
assert ret is None
target_folder = target_file_pth.parent
monkeypatch.setattr(Path, 'cwd', lambda: target_folder)
assert Path.cwd() == target_folder
ret = search.search_cwd(FILE_SEARCH)
assert ret is not None
assert ret == target_file_pth