diff --git a/langchain/document_loaders/directory.py b/langchain/document_loaders/directory.py index cf1065f2..003d6f01 100644 --- a/langchain/document_loaders/directory.py +++ b/langchain/document_loaders/directory.py @@ -74,6 +74,11 @@ class DirectoryLoader(BaseLoader): def load(self) -> List[Document]: """Load documents.""" p = Path(self.path) + if not p.exists(): + raise FileNotFoundError(f"Directory not found: '{self.path}'") + if not p.is_dir(): + raise ValueError(f"Expected directory, got file: '{self.path}'") + docs: List[Document] = [] items = list(p.rglob(self.glob) if self.recursive else p.glob(self.glob)) diff --git a/tests/unit_tests/document_loaders/test_directory.py b/tests/unit_tests/document_loaders/test_directory.py new file mode 100644 index 00000000..7fadecf3 --- /dev/null +++ b/tests/unit_tests/document_loaders/test_directory.py @@ -0,0 +1,19 @@ +import pytest + +from langchain.document_loaders import DirectoryLoader + + +def test_raise_error_if_path_not_exist() -> None: + loader = DirectoryLoader("./not_exist_directory") + with pytest.raises(FileNotFoundError) as e: + loader.load() + + assert str(e.value) == "Directory not found: './not_exist_directory'" + + +def test_raise_error_if_path_is_not_directory() -> None: + loader = DirectoryLoader(__file__) + with pytest.raises(ValueError) as e: + loader.load() + + assert str(e.value) == f"Expected directory, got file: '{__file__}'"