mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-01-11 02:15:17 +00:00
add_model_folder_path: ensure unique paths by removing duplicates (#5998)
* add_model_folder_path: ensure unique paths by removing duplicates Signed-off-by: bigcat88 <bigcat88@icloud.com> * refactored "add_model_folder_path" and added tests --------- Signed-off-by: bigcat88 <bigcat88@icloud.com>
This commit is contained in:
parent
bdf393792d
commit
caf2074773
@ -200,10 +200,17 @@ def add_model_folder_path(folder_name: str, full_folder_path: str, is_default: b
|
|||||||
global folder_names_and_paths
|
global folder_names_and_paths
|
||||||
folder_name = map_legacy(folder_name)
|
folder_name = map_legacy(folder_name)
|
||||||
if folder_name in folder_names_and_paths:
|
if folder_name in folder_names_and_paths:
|
||||||
if is_default:
|
paths, _exts = folder_names_and_paths[folder_name]
|
||||||
folder_names_and_paths[folder_name][0].insert(0, full_folder_path)
|
if full_folder_path in paths:
|
||||||
|
if is_default and paths[0] != full_folder_path:
|
||||||
|
# If the path to the folder is not the first in the list, move it to the beginning.
|
||||||
|
paths.remove(full_folder_path)
|
||||||
|
paths.insert(0, full_folder_path)
|
||||||
else:
|
else:
|
||||||
folder_names_and_paths[folder_name][0].append(full_folder_path)
|
if is_default:
|
||||||
|
paths.insert(0, full_folder_path)
|
||||||
|
else:
|
||||||
|
paths.append(full_folder_path)
|
||||||
else:
|
else:
|
||||||
folder_names_and_paths[folder_name] = ([full_folder_path], set())
|
folder_names_and_paths[folder_name] = ([full_folder_path], set())
|
||||||
|
|
||||||
|
@ -7,6 +7,14 @@ from unittest.mock import patch
|
|||||||
|
|
||||||
import folder_paths
|
import folder_paths
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def clear_folder_paths():
|
||||||
|
# Clear the global dictionary before each test to ensure isolation
|
||||||
|
original = folder_paths.folder_names_and_paths.copy()
|
||||||
|
folder_paths.folder_names_and_paths.clear()
|
||||||
|
yield
|
||||||
|
folder_paths.folder_names_and_paths = original
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def temp_dir():
|
def temp_dir():
|
||||||
with tempfile.TemporaryDirectory() as tmpdirname:
|
with tempfile.TemporaryDirectory() as tmpdirname:
|
||||||
@ -30,9 +38,33 @@ def test_get_annotated_filepath():
|
|||||||
assert folder_paths.get_annotated_filepath("test.txt", default_dir) == os.path.join(default_dir, "test.txt")
|
assert folder_paths.get_annotated_filepath("test.txt", default_dir) == os.path.join(default_dir, "test.txt")
|
||||||
assert folder_paths.get_annotated_filepath("test.txt [output]") == os.path.join(folder_paths.get_output_directory(), "test.txt")
|
assert folder_paths.get_annotated_filepath("test.txt [output]") == os.path.join(folder_paths.get_output_directory(), "test.txt")
|
||||||
|
|
||||||
def test_add_model_folder_path():
|
def test_add_model_folder_path_append(clear_folder_paths):
|
||||||
folder_paths.add_model_folder_path("test_folder", "/test/path")
|
folder_paths.add_model_folder_path("test_folder", "/default/path", is_default=True)
|
||||||
assert "/test/path" in folder_paths.get_folder_paths("test_folder")
|
folder_paths.add_model_folder_path("test_folder", "/test/path", is_default=False)
|
||||||
|
assert folder_paths.get_folder_paths("test_folder") == ["/default/path", "/test/path"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_add_model_folder_path_insert(clear_folder_paths):
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/test/path", is_default=False)
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/default/path", is_default=True)
|
||||||
|
assert folder_paths.get_folder_paths("test_folder") == ["/default/path", "/test/path"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_add_model_folder_path_re_add_existing_default(clear_folder_paths):
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/test/path", is_default=False)
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/old_default/path", is_default=True)
|
||||||
|
assert folder_paths.get_folder_paths("test_folder") == ["/old_default/path", "/test/path"]
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/test/path", is_default=True)
|
||||||
|
assert folder_paths.get_folder_paths("test_folder") == ["/test/path", "/old_default/path"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_add_model_folder_path_re_add_existing_non_default(clear_folder_paths):
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/test/path", is_default=False)
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/default/path", is_default=True)
|
||||||
|
assert folder_paths.get_folder_paths("test_folder") == ["/default/path", "/test/path"]
|
||||||
|
folder_paths.add_model_folder_path("test_folder", "/test/path", is_default=False)
|
||||||
|
assert folder_paths.get_folder_paths("test_folder") == ["/default/path", "/test/path"]
|
||||||
|
|
||||||
|
|
||||||
def test_recursive_search(temp_dir):
|
def test_recursive_search(temp_dir):
|
||||||
os.makedirs(os.path.join(temp_dir, "subdir"))
|
os.makedirs(os.path.join(temp_dir, "subdir"))
|
||||||
|
Loading…
Reference in New Issue
Block a user