Add test files for CLI, config, detector, and generator modules
Some checks failed
CI / test (push) Failing after 10s

This commit is contained in:
2026-02-01 03:34:06 +00:00
parent 94215d5f6d
commit 89e310f20c

151
tests/test_generator.py Normal file
View File

@@ -0,0 +1,151 @@
from src.generator import GitignoreGenerator
class TestGitignoreGenerator:
def test_init(self):
generator = GitignoreGenerator()
assert generator.selected_templates == set()
def test_add_template(self):
generator = GitignoreGenerator()
generator.add_template("python")
assert "python" in generator.selected_templates
def test_add_invalid_template(self):
generator = GitignoreGenerator()
generator.add_template("invalid_template")
assert "invalid_template" not in generator.selected_templates
def test_remove_template(self):
generator = GitignoreGenerator()
generator.add_template("python")
generator.remove_template("python")
assert "python" not in generator.selected_templates
def test_get_template_path_valid(self):
generator = GitignoreGenerator()
path = generator.get_template_path("python")
assert path is not None
assert path.exists()
assert "python.gitignore" in str(path)
def test_get_template_path_invalid(self):
generator = GitignoreGenerator()
path = generator.get_template_path("invalid_template")
assert path is None
def test_load_template(self):
generator = GitignoreGenerator()
content = generator.load_template("python")
assert content is not None
assert len(content) > 0
assert "__pycache__" in content
def test_load_template_invalid(self):
generator = GitignoreGenerator()
content = generator.load_template("invalid_template")
assert content == ""
def test_load_template_lines(self):
generator = GitignoreGenerator()
lines = generator.load_template_lines("python")
assert isinstance(lines, list)
assert len(lines) > 0
assert all(isinstance(line, str) for line in lines)
def test_deduplicate_entries(self):
generator = GitignoreGenerator()
entries = ["*.pyc", "*.pyc", "__pycache__", "__pycache__"]
result = generator.deduplicate_entries(entries)
assert len(result) == 2
assert "*.pyc" in result
assert "__pycache__" in result
def test_deduplicate_entries_with_comments(self):
generator = GitignoreGenerator()
entries = ["*.pyc", "*.pyc"]
comments = ["# PYTHON", "# PYTHON"]
result = generator.deduplicate_entries(entries, comments)
assert len(result) == 3
assert result[0] == "# PYTHON"
assert "*.pyc" in result
def test_generate_empty(self):
generator = GitignoreGenerator()
content = generator.generate()
assert content == ""
def test_generate_single_template(self):
generator = GitignoreGenerator()
generator.add_template("python")
content = generator.generate()
assert content is not None
assert len(content) > 0
assert "__pycache__" in content
def test_generate_multiple_templates(self):
generator = GitignoreGenerator()
generator.add_template("python")
generator.add_template("vscode")
content = generator.generate()
assert content is not None
assert len(content) > 0
assert "__pycache__" in content
assert ".vscode" in content
def test_generate_for_types(self):
generator = GitignoreGenerator()
content = generator.generate_for_types(["python", "javascript"])
assert content is not None
assert len(content) > 0
def test_get_available_templates(self):
generator = GitignoreGenerator()
templates = generator.get_available_templates()
assert isinstance(templates, list)
assert len(templates) > 0
assert "python" in templates
assert "javascript" in templates
def test_validate_template_type_valid(self):
generator = GitignoreGenerator()
assert generator.validate_template_type("python") is True
assert generator.validate_template_type("javascript") is True
def test_validate_template_type_invalid(self):
generator = GitignoreGenerator()
assert generator.validate_template_type("invalid") is False
def test_get_template_categories(self):
generator = GitignoreGenerator()
categories = generator.get_template_categories()
assert isinstance(categories, dict)
assert "language" in categories
assert "framework" in categories
assert "ide" in categories
assert "os" in categories
assert "tools" in categories
def test_template_map_complete(self):
generator = GitignoreGenerator()
for template_type, template_path in generator.TEMPLATE_MAP.items():
path = generator.template_dir / template_path
assert path.exists(), f"Template {template_type} not found at {path}"
def test_generate_ends_with_newline(self):
generator = GitignoreGenerator()
generator.add_template("python")
content = generator.generate()
assert content.endswith("\n") or content == ""
def test_generate_python_includes_virtual_env(self):
generator = GitignoreGenerator()
generator.add_template("python")
content = generator.generate()
assert "venv/" in content or ".venv/" in content
def test_generate_vscode_includes_workspace_settings(self):
generator = GitignoreGenerator()
generator.add_template("vscode")
content = generator.generate()
assert ".vscode" in content