65 lines
1.9 KiB
Python
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
|