diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..3c790ba --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,76 @@ +"""Pytest configuration and fixtures.""" + +import os +import tempfile +from pathlib import Path +from typing import Generator + +import pytest + +from gitignore_cli.custom_patterns import CustomPatternManager +from gitignore_cli.template_loader import TemplateLoader + + +@pytest.fixture +def temp_dir() -> Generator[Path, None, None]: + """Create a temporary directory for tests.""" + with tempfile.TemporaryDirectory() as tmp: + yield Path(tmp) + + +@pytest.fixture +def temp_template_dir(temp_dir: Path) -> Path: + """Create a temporary template directory with sample templates.""" + template_dir = temp_dir / "templates" + template_dir.mkdir() + + python_template = template_dir / "python.yaml" + python_template.write_text(""" +name: python +category: language +description: Python development +patterns: | + __pycache__/ + *.pyc + .env +""") + + node_template = template_dir / "nodejs.yaml" + node_template.write_text(""" +name: node +category: language +description: Node.js development +patterns: | + node_modules/ + *.log +""") + + vscode_template = template_dir / "vscode.yaml" + vscode_template.write_text(""" +name: vscode +category: ide +description: VSCode IDE +patterns: | + .vscode/ + *.vsix +""") + + return template_dir + + +@pytest.fixture +def template_loader(temp_template_dir: Path) -> TemplateLoader: + """Create a TemplateLoader with temporary templates.""" + return TemplateLoader(template_dir=temp_template_dir) + + +@pytest.fixture +def temp_patterns_file(temp_dir: Path) -> Path: + """Create a temporary custom patterns file.""" + return temp_dir / "custom_patterns.yaml" + + +@pytest.fixture +def custom_pattern_manager(temp_patterns_file: Path) -> CustomPatternManager: + """Create a CustomPatternManager with temporary storage.""" + return CustomPatternManager(patterns_file=temp_patterns_file)