import os from pathlib import Path from pyucc.core.scanner import _normalize_extensions, find_source_files def test_normalize_extensions(): exts = ["py", ".PY", "", " txt "] out = _normalize_extensions(exts) assert ".py" in out assert ".txt" in out assert "" not in out def test_find_source_files_allowed_and_ignore(tmp_path): # create directory tree d = tmp_path / "proj" d.mkdir() sub = d / "sub" sub.mkdir() f1 = d / "a.py" f1.write_text("print('hello')\n") f2 = d / "b.txt" f2.write_text("just text\n") f3 = d / "bin.exe" f3.write_text("binary") f4 = sub / "c.py" f4.write_text("# comment\n\nprint(1)\n") # allowed extensions filter found = find_source_files(d, allowed_extensions=['.py']) found_names = {p.name for p in found} assert 'a.py' in found_names assert 'c.py' in found_names assert 'b.txt' not in found_names assert 'bin.exe' not in found_names # ignore patterns (ignore sub directory) found2 = find_source_files(d, allowed_extensions=None, ignore_patterns=['sub']) names2 = {p.name for p in found2} assert 'a.py' in names2 assert 'c.py' not in names2