From 97191568d736f49466bf234d8fd8bc2bc27faab2 Mon Sep 17 00:00:00 2001 From: huyua9 Date: Sun, 10 May 2026 09:21:44 +0800 Subject: [PATCH] Handle input directory creation failures safely --- folder_paths.py | 10 +++++----- tests/test_folder_paths.py | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/folder_paths.py b/folder_paths.py index 463d803b3..1526bf782 100644 --- a/folder_paths.py +++ b/folder_paths.py @@ -117,12 +117,12 @@ def set_temp_directory(temp_dir: str) -> None: def set_input_directory(input_dir: str) -> None: global input_directory + try: + os.makedirs(input_dir, exist_ok=True) + except OSError: + logging.exception("Failed to create input directory: %s", input_dir) + raise input_directory = input_dir - if not os.path.exists(input_directory): - try: - os.makedirs(input_directory) - except: - logging.error("Failed to create input directory") def get_output_directory() -> str: global output_directory diff --git a/tests/test_folder_paths.py b/tests/test_folder_paths.py index 9f89cb41b..163b58a21 100644 --- a/tests/test_folder_paths.py +++ b/tests/test_folder_paths.py @@ -1,3 +1,5 @@ +import pytest + import folder_paths @@ -11,3 +13,18 @@ def test_set_input_directory_creates_missing_directory(tmp_path): assert custom_input_directory.is_dir() finally: folder_paths.set_input_directory(original_input_directory) + + +def test_set_input_directory_keeps_original_when_creation_fails(tmp_path, monkeypatch): + original_input_directory = folder_paths.get_input_directory() + custom_input_directory = tmp_path / "custom-input" + + def fail_to_create_directory(path, exist_ok=False): + raise OSError("create failed") + + monkeypatch.setattr(folder_paths.os, "makedirs", fail_to_create_directory) + + with pytest.raises(OSError, match="create failed"): + folder_paths.set_input_directory(str(custom_input_directory)) + + assert folder_paths.get_input_directory() == original_input_directory