Add tests - part 2
Some checks failed
CI / test (3.10) (push) Failing after 17s
CI / test (3.11) (push) Failing after 14s
CI / test (3.12) (push) Failing after 18s
CI / lint (push) Successful in 16s
CI / build (push) Successful in 15s

This commit is contained in:
2026-02-02 17:24:43 +00:00
parent 7c7ebd9dd7
commit 54a13cbb7a

116
tests/test_diff.py Normal file
View File

@@ -0,0 +1,116 @@
"""Tests for diff generation."""
from i18n_guardian.diff.diff_generator import DiffGenerator, DiffChange, DiffResult
class TestDiffGenerator:
"""Tests for DiffGenerator."""
def test_generate_diff_basic(self, temp_dir):
"""Test basic diff generation."""
file_path = temp_dir / "test.py"
old_content = 'message = "Hello"'
new_content = 'message = t("Hello")'
generator = DiffGenerator()
diff = generator.generate_diff(file_path, old_content, new_content)
assert isinstance(diff, str)
assert len(diff) > 0
assert "---" in diff
assert "+++" in diff
assert "-" in diff
assert "+" in diff
def test_generate_diff_multiple_lines(self, temp_dir):
"""Test diff generation for multiple lines."""
file_path = temp_dir / "test.py"
old_content = '''def greet():
return "Hello"
'''
new_content = '''def greet():
return t("Hello")
'''
generator = DiffGenerator()
diff = generator.generate_diff(file_path, old_content, new_content)
assert "Hello" in diff
def test_create_replacement(self):
"""Test creating replacement string with i18n function."""
generator = DiffGenerator()
replacement = generator.create_replacement("Hello World", "t")
assert 't("Hello World")' in replacement
assert "\\n" not in replacement or replacement.count('\\n') == 0
def test_create_replacement_escaping(self):
"""Test that special characters are escaped."""
generator = DiffGenerator()
replacement = generator.create_replacement('Hello "World"', "t")
assert '\\"' in replacement
def test_diff_result_structure(self):
"""Test DiffResult has correct structure."""
result = DiffResult()
assert hasattr(result, "changes")
assert hasattr(result, "files_modified")
assert hasattr(result, "total_changes")
assert result.changes == []
def test_diff_change_structure(self, temp_dir):
"""Test DiffChange has correct structure."""
change = DiffChange(
file_path=temp_dir / "test.py",
original_line=1,
original_text='"Hello"',
new_text='t("Hello")',
)
assert hasattr(change, "file_path")
assert hasattr(change, "original_line")
assert hasattr(change, "original_text")
assert hasattr(change, "new_text")
def test_empty_diff(self, temp_dir):
"""Test diff with no changes."""
file_path = temp_dir / "test.py"
content = 'message = "Hello"'
generator = DiffGenerator()
diff = generator.generate_diff(file_path, content, content)
assert isinstance(diff, str)
def test_apply_diff_creates_backup(self, temp_dir):
"""Test that applying diff creates backup."""
file_path = temp_dir / "test.py"
file_path.write_text('message = "Hello"', encoding="utf-8")
old_content = file_path.read_text(encoding="utf-8")
new_content = 'message = t("Hello")'
generator = DiffGenerator()
diff = generator.generate_diff(file_path, old_content, new_content)
result = generator.apply_diff(file_path, diff, backup=True)
assert result
assert file_path.with_suffix(".bak").exists()
def test_apply_diff_modifies_file(self, temp_dir):
"""Test that applying diff modifies file."""
file_path = temp_dir / "test.py"
file_path.write_text('message = "Hello"', encoding="utf-8")
old_content = file_path.read_text(encoding="utf-8")
new_content = 'message = t("Hello")'
generator = DiffGenerator()
diff = generator.generate_diff(file_path, old_content, new_content)
generator.apply_diff(file_path, diff, backup=False)
content = file_path.read_text(encoding="utf-8")
assert 't("Hello")' in content