Patch_Hawk / tests /test_sandbox.py
RAMCr7's picture
Final patch
58f6308
"""Tests for the 3-stage patch validation pipeline."""
from patchhawk.agent.sandbox import validate_patch
def test_syntax_error_detected():
"""Stage 1: py_compile catches a missing closing quote."""
scenario = {
"type": "functional",
"code_snippet": "print('hello')",
"unit_test_code": None,
"attack_type": None,
}
patch = "print('hello" # syntax error
success, msg, details = validate_patch(scenario, patch, use_docker=False)
assert success is False
assert msg == "Syntax error"
assert "error" in details
def test_unit_test_pass():
"""Stage 2: a correct patch passes the unit test."""
scenario = {
"type": "functional",
"code_snippet": "def add(a, b): return a + b",
"unit_test_code": "import code\nassert code.add(1, 2) == 3\n",
"attack_type": None,
}
patch = "def add(a, b):\n return a + b\n"
success, msg, details = validate_patch(scenario, patch, use_docker=False)
assert success is True
assert msg == "Patch is valid"
def test_unit_test_fail():
"""Stage 2: a broken patch fails the unit test."""
scenario = {
"type": "functional",
"code_snippet": "def add(a, b): return a + b",
"unit_test_code": "import code\nassert code.add(1, 2) == 3\n",
"attack_type": None,
}
patch = "def add(a, b):\n return a - b\n"
success, msg, details = validate_patch(scenario, patch, use_docker=False)
assert success is False
assert msg == "Unit test failed"
assert "test_output" in details
def test_vulnerability_remains():
"""Stage 3: re-attack detects that the backdoor was not removed."""
scenario = {
"type": "true_positive",
"attack_type": "obfuscated_exec",
"code_snippet": "print('Hello from hidden exec!')\ndef add(a, b): return a + b",
"unit_test_code": "import code\nassert code.add(1, 2) == 3\n",
}
# Patch keeps the backdoor print
patch = "print('Hello from hidden exec!')\ndef add(a, b):\n return a + b\n"
success, msg, details = validate_patch(scenario, patch, use_docker=False)
assert success is False
assert msg == "Vulnerability still accessible"
assert "evidence" in details
def test_clean_patch_passes_reattack():
"""Stage 3: a properly cleaned patch passes re-attack."""
scenario = {
"type": "true_positive",
"attack_type": "obfuscated_exec",
"code_snippet": "print('Hello from hidden exec!')\ndef add(a, b): return a + b",
"unit_test_code": "import code\nassert code.add(1, 2) == 3\n",
}
# Patch removes the backdoor
patch = "def add(a, b):\n return a + b\n"
success, msg, details = validate_patch(scenario, patch, use_docker=False)
assert success is True
assert msg == "Patch is valid"