first commit

This commit is contained in:
eeymoo
2026-09-19 12:54:45 +08:00
commit 6fc5b64077
126 changed files with 8601 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
"""Tests for mutation rules."""
from app.dataset.rules.python.null_pointer import NoneReferenceRule
from app.dataset.rules.python.boundary_error import BoundaryErrorRule
from app.dataset.rules.python.logic_operator import LogicOperatorRule
from app.dataset.rules.registry import get_registry
def test_python_none_reference():
src = """def process(data):
if data is not None:
x = data.upper()
return x
"""
m = NoneReferenceRule().detect_and_mutate(src)
assert m is not None
assert m.defect_type == "null_pointer"
assert "if data is not None" not in m.mutated_source
def test_python_boundary_error():
src = """def get(items, i):
if i < len(items):
return items[i]
"""
m = BoundaryErrorRule().detect_and_mutate(src)
assert m is not None
assert "<=" in m.mutated_source
def test_python_logic_operator():
src = """def ok(a, b):
return a and b
"""
m = LogicOperatorRule().detect_and_mutate(src)
assert m is not None
assert " or " in m.mutated_source
def test_registry_discovers_rules():
registry = get_registry()
assert "python" in registry.all_rules()
assert "java" in registry.all_rules()
assert "javascript" in registry.all_rules()