M9.2-M9.5: Add improvement pipeline, community workflow, transitive integrity, and supply chain attestation
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
"""Tests for M9.3 community improvement workflow."""
|
||||
|
||||
from cmdforge.community import (
|
||||
ImprovementSubmission,
|
||||
create_submission,
|
||||
run_submission_tests,
|
||||
review_submission,
|
||||
)
|
||||
from cmdforge.tool import Tool, PromptStep, CodeStep
|
||||
|
||||
|
||||
class TestCreateSubmission:
|
||||
def test_create_for_prompt_step(self):
|
||||
tool = Tool(
|
||||
name="test",
|
||||
version="1.0.0",
|
||||
steps=[PromptStep(prompt="Summarize", provider="mock", output_var="x")],
|
||||
output="{x}",
|
||||
)
|
||||
sub = create_submission(tool, 0, "Summarize the text thoroughly", "alice", "More detail")
|
||||
assert sub.tool_name == "test"
|
||||
assert sub.step_type == "prompt"
|
||||
assert sub.original == "Summarize"
|
||||
assert sub.proposed == "Summarize the text thoroughly"
|
||||
assert sub.submitter == "alice"
|
||||
assert sub.status == "pending"
|
||||
|
||||
def test_create_for_code_step(self):
|
||||
tool = Tool(
|
||||
name="test",
|
||||
steps=[CodeStep(code="x = 1", output_var="x")],
|
||||
output="{x}",
|
||||
)
|
||||
sub = create_submission(tool, 0, "x = 42", "bob")
|
||||
assert sub.step_type == "code"
|
||||
assert sub.original == "x = 1"
|
||||
|
||||
def test_invalid_step_index(self):
|
||||
tool = Tool(name="test")
|
||||
try:
|
||||
create_submission(tool, 5, "new", "alice")
|
||||
assert False, "Should have raised"
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
|
||||
class TestReviewSubmission:
|
||||
def test_review_approved(self):
|
||||
sub = ImprovementSubmission(
|
||||
tool_name="test", tool_version="1.0.0", submitter="alice",
|
||||
step_index=0, step_type="prompt", original="a", proposed="b",
|
||||
status="tested",
|
||||
)
|
||||
review = review_submission(sub, "approve", "admin", "Good improvement")
|
||||
assert review.decision == "approve"
|
||||
assert sub.status == "approve"
|
||||
|
||||
def test_review_pending_rejected(self):
|
||||
sub = ImprovementSubmission(
|
||||
tool_name="test", tool_version="1.0.0", submitter="alice",
|
||||
step_index=0, step_type="prompt", original="a", proposed="b",
|
||||
status="pending",
|
||||
)
|
||||
try:
|
||||
review_submission(sub, "approve", "admin")
|
||||
assert False, "Should have raised"
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
def test_invalid_decision(self):
|
||||
sub = ImprovementSubmission(
|
||||
tool_name="test", tool_version="1.0.0", submitter="alice",
|
||||
step_index=0, step_type="prompt", original="a", proposed="b",
|
||||
status="tested",
|
||||
)
|
||||
try:
|
||||
review_submission(sub, "maybe", "admin")
|
||||
assert False, "Should have raised"
|
||||
except ValueError:
|
||||
pass
|
||||
Reference in New Issue
Block a user