Files

64 lines
2.0 KiB
Python

"""Tests for the Load picker's folder cover thumbnails (#424).
A folder shows its first favorited flake's cover, else its first flake's,
else its first subfolder's; flakes without a cover are skipped. Same loading
approach as test_variant_defaults.py.
"""
import importlib.util
import os
import sys
import types
def _load_flake_io():
fp = types.ModuleType("folder_paths")
fp.get_filename_list = lambda category: []
fp.base_path = os.getcwd()
sys.modules["folder_paths"] = fp
pkg = types.ModuleType("_fpkg_fc")
pkg.__path__ = [os.path.dirname(os.path.dirname(os.path.abspath(__file__)))]
sys.modules["_fpkg_fc"] = pkg
here = os.path.dirname(os.path.abspath(__file__))
src = os.path.join(os.path.dirname(here), "flake_io.py")
spec = importlib.util.spec_from_file_location("_fpkg_fc.flake_io", src)
mod = importlib.util.module_from_spec(spec)
sys.modules["_fpkg_fc.flake_io"] = mod
spec.loader.exec_module(mod)
return mod
fio = _load_flake_io()
def _covers(names, dirs, favorites=(), covered=None):
covered = set(names) if covered is None else set(covered)
return fio.list_folder_covers(names, dirs, list(favorites), covered.__contains__)
def test_first_flake_in_folder():
assert _covers(["a/zed", "a/Bob", "a/carl"], ["a"]) == {"a": "a/Bob"}
def test_favorite_wins():
assert _covers(["a/bob", "a/carl"], ["a"], favorites=["a/carl"]) == {"a": "a/carl"}
def test_flakes_without_cover_are_skipped():
assert _covers(["a/bob", "a/carl"], ["a"], favorites=["a/bob"], covered=["a/carl"]) == {"a": "a/carl"}
def test_falls_back_to_first_subfolder_recursively():
names = ["a/y/deep/eve", "a/z/zoe"]
dirs = ["a", "a/y", "a/y/deep", "a/z"]
assert _covers(names, dirs) == {"a": "a/y/deep/eve", "a/y": "a/y/deep/eve", "a/y/deep": "a/y/deep/eve", "a/z": "a/z/zoe"}
def test_direct_flake_beats_subfolder():
assert _covers(["a/b/bob", "a/zed"], ["a", "a/b"])["a"] == "a/zed"
def test_empty_folders_have_no_cover():
assert _covers(["a/bob"], ["a", "empty", "a/nocover"], covered=[]) == {}