Files
AEmotionStudio-ComfyUI-Disc…/tests/test_path_utils.py
T
AEmotionStudioandClaude Opus 4.5 436b773bd8 chore: implement phase 6 - final cleanup
- Remove unused imports from nodes (time, torch, requests, itertools)
- Move uuid import to top-level in bot/bot.py
- Add 4 new test files with 86 tests for shared utilities
- Update CHANGELOG.md with version 2.0.0 refactoring summary
- Update REFACTOR_PRD.md to mark Phase 5 complete

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 10:20:51 -08:00

142 lines
4.8 KiB
Python

"""Tests for shared/path_utils.py"""
import sys
import os
import unittest
from unittest.mock import patch, MagicMock
import tempfile
import shutil
# Mock dependencies before importing project modules
sys.modules["torch"] = MagicMock()
sys.modules["numpy"] = MagicMock()
sys.modules["cv2"] = MagicMock()
# Add parent directory to path for imports
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from shared.path_utils import (
get_output_directory,
ensure_directory_exists,
get_unique_filepath,
)
class TestGetOutputDirectory(unittest.TestCase):
"""Test get_output_directory function."""
def setUp(self):
"""Create temporary directories for testing."""
self.test_dir = tempfile.mkdtemp()
self.output_dir = os.path.join(self.test_dir, "output")
self.temp_dir = os.path.join(self.test_dir, "temp")
os.makedirs(self.output_dir)
os.makedirs(self.temp_dir)
def tearDown(self):
"""Clean up temporary directories."""
shutil.rmtree(self.test_dir)
def test_save_output_true(self):
"""Test output directory when saving is enabled."""
result = get_output_directory(
save_output=True,
comfy_output_dir=self.output_dir,
temp_dir=self.temp_dir,
)
expected = os.path.join(self.output_dir, "discord_output")
self.assertEqual(result, expected)
self.assertTrue(os.path.exists(result))
def test_save_output_false(self):
"""Test temp directory when saving is disabled."""
result = get_output_directory(
save_output=False,
comfy_output_dir=self.output_dir,
temp_dir=self.temp_dir,
)
self.assertEqual(result, self.temp_dir)
def test_custom_subfolder(self):
"""Test with custom subfolder name."""
result = get_output_directory(
save_output=True,
comfy_output_dir=self.output_dir,
temp_dir=self.temp_dir,
subfolder="custom_folder",
)
expected = os.path.join(self.output_dir, "custom_folder")
self.assertEqual(result, expected)
self.assertTrue(os.path.exists(result))
class TestEnsureDirectoryExists(unittest.TestCase):
"""Test ensure_directory_exists function."""
def setUp(self):
"""Create temporary directory for testing."""
self.test_dir = tempfile.mkdtemp()
def tearDown(self):
"""Clean up temporary directories."""
shutil.rmtree(self.test_dir)
def test_creates_directory(self):
"""Test that directory is created if it doesn't exist."""
new_dir = os.path.join(self.test_dir, "new_directory")
self.assertFalse(os.path.exists(new_dir))
result = ensure_directory_exists(new_dir)
self.assertTrue(os.path.exists(new_dir))
self.assertEqual(result, new_dir)
def test_existing_directory(self):
"""Test that existing directory is not affected."""
result = ensure_directory_exists(self.test_dir)
self.assertTrue(os.path.exists(self.test_dir))
self.assertEqual(result, self.test_dir)
def test_nested_directories(self):
"""Test creating nested directories."""
nested = os.path.join(self.test_dir, "a", "b", "c")
result = ensure_directory_exists(nested)
self.assertTrue(os.path.exists(nested))
self.assertEqual(result, nested)
class TestGetUniqueFilepath(unittest.TestCase):
"""Test get_unique_filepath function."""
def test_basic_filepath(self):
"""Test basic filepath generation."""
result = get_unique_filepath("/output", "image", ".png")
self.assertEqual(result, "/output/image.png")
def test_with_counter(self):
"""Test filepath with counter."""
result = get_unique_filepath("/output", "image", ".png", counter=5)
self.assertEqual(result, "/output/image_00005.png")
def test_counter_formatting(self):
"""Test counter is formatted with leading zeros."""
result = get_unique_filepath("/output", "image", ".jpg", counter=123)
self.assertEqual(result, "/output/image_00123.jpg")
def test_extension_without_dot(self):
"""Test extension is normalized if dot is missing."""
result = get_unique_filepath("/output", "video", "mp4")
self.assertEqual(result, "/output/video.mp4")
def test_extension_with_dot(self):
"""Test extension with dot works correctly."""
result = get_unique_filepath("/output", "video", ".mp4")
self.assertEqual(result, "/output/video.mp4")
def test_counter_zero(self):
"""Test counter value of zero."""
result = get_unique_filepath("/output", "frame", ".png", counter=0)
self.assertEqual(result, "/output/frame_00000.png")
if __name__ == "__main__":
unittest.main()