diff --git a/pageindex/index/utils.py b/pageindex/index/utils.py index 1339708ca..c3252d39e 100644 --- a/pageindex/index/utils.py +++ b/pageindex/index/utils.py @@ -741,13 +741,15 @@ def sanitize_filename(filename, replacement='-'): def get_pdf_name(pdf_path): # Extract PDF name - if isinstance(pdf_path, str): + if isinstance(pdf_path, (str, Path)): pdf_name = os.path.basename(pdf_path) elif isinstance(pdf_path, BytesIO): pdf_reader = PyPDF2.PdfReader(pdf_path) meta = pdf_reader.metadata pdf_name = meta.title if meta and meta.title else 'Untitled' pdf_name = sanitize_filename(pdf_name) + else: + pdf_name = 'Untitled' return pdf_name diff --git a/tests/test_get_pdf_name.py b/tests/test_get_pdf_name.py new file mode 100644 index 000000000..78c87d5dd --- /dev/null +++ b/tests/test_get_pdf_name.py @@ -0,0 +1,21 @@ +from pathlib import Path + +from pageindex.index.utils import get_pdf_name + + +def test_get_pdf_name_str(): + assert get_pdf_name("/some/path/document.pdf") == "document.pdf" + + +def test_get_pdf_name_pathlib_path(): + # Previously raised UnboundLocalError — Path is neither str nor BytesIO + assert get_pdf_name(Path("/some/path/document.pdf")) == "document.pdf" + + +def test_get_pdf_name_pathlib_relative(): + assert get_pdf_name(Path("reports/annual.pdf")) == "annual.pdf" + + +def test_get_pdf_name_unknown_type_returns_untitled(): + # Any unrecognised type should not crash — returns a safe fallback + assert get_pdf_name(12345) == "Untitled"