* CI/CD Optimization: Guard Rails, Black Linting, and Pre-commit Hooks - Fixed all test collection errors (Selenium imports, fixture paths, syntax) - Implemented pre-commit hooks with Black formatting and isort - Created comprehensive Makefile with test targets (unit, integration, functional, e2e) - Added pytest.ini with marker definitions for test categorization - Established guard rails to prevent future collection errors - Wrapped optional dependencies (Selenium, MoviePy) in try-except blocks - Added conftest_markers for automatic test categorization This ensures a smooth development stream with: - Fast feedback loops (pre-commit checks before push) - Consistent code formatting (Black) - Reliable CI/CD (no collection errors, proper test isolation) - Clear test organization (unit, integration, functional, E2E) * Fix CI/CD test failures: - Export templates from dashboard.app - Fix model name assertion in test_agent.py - Fix platform-agnostic path resolution in test_path_resolution.py - Skip Docker tests in test_docker_deployment.py if docker not available - Fix test_model_fallback_chain logic in test_ollama_integration.py * Add preventative pre-commit checks and Docker test skipif decorators: - Create pre_commit_checks.py script for common CI failures - Add skipif decorators to Docker tests - Improve test robustness for CI environments
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
"""Tests for path resolution in file operations."""
|
|
|
|
import pytest
|
|
from pathlib import Path
|
|
|
|
|
|
def test_resolve_path_expands_tilde():
|
|
"""Path resolution should expand ~ to home directory."""
|
|
from creative.tools.file_ops import _resolve_path
|
|
|
|
result = _resolve_path("~/test")
|
|
|
|
# Should expand to current user's home directory
|
|
assert result.as_posix() == (Path.home() / "test").as_posix()
|
|
|
|
|
|
def test_resolve_path_relative_to_repo():
|
|
"""Relative paths should resolve to repo root."""
|
|
from creative.tools.file_ops import _resolve_path
|
|
|
|
result = _resolve_path("src/config.py")
|
|
|
|
assert "Timmy-time-dashboard" in str(result)
|
|
assert result.name == "config.py"
|
|
|
|
|
|
def test_resolve_path_absolute():
|
|
"""Absolute paths should work as-is."""
|
|
from creative.tools.file_ops import _resolve_path
|
|
|
|
result = _resolve_path("/etc/hosts")
|
|
|
|
assert result.name == "hosts"
|
|
|
|
|
|
def test_resolve_path_with_custom_base():
|
|
"""Custom base_dir should override repo root."""
|
|
from creative.tools.file_ops import _resolve_path
|
|
|
|
result = _resolve_path("test.py", base_dir="/tmp")
|
|
|
|
# Handle macOS /private/tmp vs /tmp
|
|
assert result.name == "test.py"
|
|
assert "tmp" in result.as_posix()
|