mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-07-13 09:57:20 +08:00
Added parameter validation in comfy/cli_args.py to ensure the --models-directory argument is passing a valid path. Add getter/setter functons in folder_paths.py to mirror other similar args getter/setter helpers. Added test coverage in tests-unit/comfy_test/folder_path_test.py. test_models_directory_cli_and_getters(): Verifies that passing a valid path via the CLI sets up both the getter and underlying global variable correctly, and asserts that invalid paths fail-fast with validation errors. test_models_dir_getter_setter(): Asserts that programmatic calls to the new getter/setter interface function reliably and clean up after themselves.
This commit is contained in:
parent
14a19a1aba
commit
088006b0f4
@ -44,7 +44,6 @@ parser.add_argument("--max-upload-size", type=float, default=100, help="Set the
|
||||
|
||||
parser.add_argument("--base-directory", type=str, default=None, help="Set the ComfyUI base directory for models, custom_nodes, input, output, temp, and user directories.")
|
||||
parser.add_argument("--extra-model-paths-config", type=str, default=None, metavar="PATH", nargs='+', action='append', help="Load one or more extra_model_paths.yaml files.")
|
||||
parser.add_argument("--models-directory", type=str, default=None, help="Set the ComfyUI models directory. Overrides --base-directory.")
|
||||
parser.add_argument("--output-directory", type=str, default=None, help="Set the ComfyUI output directory. Overrides --base-directory.")
|
||||
parser.add_argument("--temp-directory", type=str, default=None, help="Set the ComfyUI temp directory (default is in the ComfyUI directory). Overrides --base-directory.")
|
||||
parser.add_argument("--input-directory", type=str, default=None, help="Set the ComfyUI input directory. Overrides --base-directory.")
|
||||
@ -226,6 +225,7 @@ parser.add_argument(
|
||||
)
|
||||
|
||||
parser.add_argument("--user-directory", type=is_valid_directory, default=None, help="Set the ComfyUI user directory with an absolute path. Overrides --base-directory.")
|
||||
parser.add_argument("--models-directory", type=is_valid_directory, default=None, help="Set the ComfyUI models directory. Overrides --base-directory.")
|
||||
|
||||
parser.add_argument("--enable-compress-response-body", action="store_true", help="Enable compressing response body.")
|
||||
|
||||
|
||||
@ -148,6 +148,14 @@ def set_user_directory(user_dir: str) -> None:
|
||||
global user_directory
|
||||
user_directory = user_dir
|
||||
|
||||
def get_models_directory() -> str:
|
||||
global models_dir
|
||||
return models_dir
|
||||
|
||||
def set_models_directory(models_directory: str) -> None:
|
||||
global models_dir
|
||||
models_dir = models_directory
|
||||
|
||||
|
||||
# System User Protection - Protects system directories from HTTP endpoint access
|
||||
# System Users are internal-only users that cannot be accessed via HTTP endpoints.
|
||||
|
||||
@ -163,3 +163,25 @@ def test_base_path_change_clears_old(set_base_dir):
|
||||
|
||||
for name in ["controlnet", "diffusion_models", "text_encoders"]:
|
||||
assert len(folder_paths.get_folder_paths(name)) == 2
|
||||
|
||||
|
||||
def test_models_directory_cli_and_getters(temp_dir):
|
||||
with patch.object(sys, 'argv', ["main.py", "--models-directory", temp_dir]):
|
||||
reload(comfy.cli_args)
|
||||
reload(folder_paths)
|
||||
|
||||
assert folder_paths.get_models_directory() == os.path.abspath(temp_dir)
|
||||
assert folder_paths.models_dir == os.path.abspath(temp_dir)
|
||||
|
||||
with pytest.raises(Exception):
|
||||
comfy.cli_args.is_valid_directory(os.path.join(temp_dir, "non_existent_folder_path"))
|
||||
|
||||
|
||||
def test_models_dir_getter_setter():
|
||||
orig_models_dir = folder_paths.get_models_directory()
|
||||
try:
|
||||
folder_paths.set_models_directory("/custom/models/path")
|
||||
assert folder_paths.get_models_directory() == "/custom/models/path"
|
||||
finally:
|
||||
folder_paths.set_models_directory(orig_models_dir)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user