import os from pathlib import Path import tempfile import shutil import sys sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) from slic.utils.path import * import slic.utils.ask_yes_no # Tests when user says yes to delete if the file exists def test_can_create_all_files_user_says_yes(): slic.utils.ask_yes_no.ask_yes_no = lambda msg, **kwargs: True tmp_dir = tempfile.mkdtemp() f1 = os.path.join(tmp_dir, "a.txt") # exists f2 = os.path.join(tmp_dir, "b.txt") # does not exist f3 = os.path.join(tmp_dir, "c.txt") # exists Path(f1).touch() Path(f3).touch() assert os.path.isfile(f1) assert not os.path.exists(f2) assert os.path.isfile(f3) result = can_create_all_files([f1, f2, f3]) assert result is True assert not os.path.exists(f1) assert not os.path.exists(f3) assert not os.path.exists(f2) shutil.rmtree(tmp_dir) # Tests when user says no to delete if the file exists def test_can_create_all_files_user_says_no(): slic.utils.ask_yes_no.ask_yes_no = lambda msg, **kwargs: False tmp_dir = tempfile.mkdtemp() f1 = os.path.join(tmp_dir, "file1.txt") # exists f2 = os.path.join(tmp_dir, "file2.txt") # doesn't exist Path(f1).touch() result = can_create_all_files([f1, f2]) assert result is False assert os.path.exists(f1) # File must still exist shutil.rmtree(tmp_dir) # Directory creation test def test_make_missing_dir_creates_folder(): tmp_dir = tempfile.mkdtemp() new_folder = os.path.join(tmp_dir, "nested/dir") assert not os.path.exists(new_folder) make_missing_dir(new_folder) assert os.path.isdir(new_folder) shutil.rmtree(tmp_dir) # glob_files() def test_glob_files_returns_matching_files_only(): tmp_dir = tempfile.mkdtemp() Path(os.path.join(tmp_dir, "a.txt")).touch() Path(os.path.join(tmp_dir, "l.log")).touch() Path(os.path.join(tmp_dir, "b.txt")).touch() Path(os.path.join(tmp_dir, "note.md")).touch() os.mkdir(os.path.join(tmp_dir, "folder")) result = list(glob_files(tmp_dir, "*.txt")) result_names = sorted([f.name for f in result]) assert result_names == ["a.txt", "b.txt"] shutil.rmtree(tmp_dir) # filter_files() def test_filter_files_excludes_directories(): tmp_dir = tempfile.mkdtemp() f1 = Path(os.path.join(tmp_dir, "x.txt")) f3 = Path(os.path.join(tmp_dir, "y.log")) f2 = Path(os.path.join(tmp_dir, "y.txt")) d1 = Path(os.path.join(tmp_dir, "dir")) f4 = Path(os.path.join(tmp_dir, "y.json")) f1.touch() f3.touch() f2.touch() d1.mkdir() f4.touch() result = filter_files([f1, f3, f2, d1, f4]) result_names = sorted([p.name for p in result]) assert result_names == ["x.txt", "y.json", "y.log", "y.txt"] shutil.rmtree(tmp_dir)