Spaces:
Sleeping
Sleeping
| from codereview_env.models import CodeReviewAction, CodeReviewState, ReviewFinding | |
| def test_reset_returns_task_observation(env): | |
| observation = env.reset(task_id="pagination-regression") | |
| assert observation.task_id == "pagination-regression" | |
| assert observation.done is False | |
| assert len(observation.available_artifacts) >= 2 | |
| def test_open_artifact_gives_partial_reward(env): | |
| env.reset(task_id="pagination-regression") | |
| observation = env.step( | |
| CodeReviewAction(action_type="open_artifact", artifact_id="test_log") | |
| ) | |
| assert 0.0 < observation.reward <= 0.2 | |
| assert any( | |
| artifact.artifact_id == "test_log" for artifact in observation.opened_artifacts | |
| ) | |
| def test_submit_review_finishes_episode_with_score(env): | |
| env.reset(task_id="tenant-export-auth") | |
| env.step( | |
| CodeReviewAction(action_type="open_artifact", artifact_id="auth_middleware") | |
| ) | |
| observation = env.step( | |
| CodeReviewAction( | |
| action_type="submit_review", | |
| findings=[ | |
| ReviewFinding( | |
| title="Missing tenant scope", | |
| file_path="api/admin_exports.py", | |
| line_hint="export_invoices", | |
| severity="critical", | |
| rationale="The handler trusts account_id from a query parameter and can leak another tenant's invoice data.", | |
| recommendation="Call require_admin and require_account_scope before exporting the CSV.", | |
| ) | |
| ], | |
| ) | |
| ) | |
| assert observation.done is True | |
| assert 0.0 <= observation.score <= 1.0 | |
| assert observation.score > 0.4 | |
| def test_state_reports_progress(env): | |
| env.reset(task_id="refund-idempotency") | |
| env.step( | |
| CodeReviewAction(action_type="open_artifact", artifact_id="payment_client") | |
| ) | |
| state = env.state | |
| assert isinstance(state, CodeReviewState) | |
| assert state.step_count == 1 | |
| assert "payment_client" in state.opened_artifact_ids | |
| def test_step_limit_ends_episode(env): | |
| observation = env.reset(task_id="pagination-regression") | |
| for _ in range(observation.step_limit): | |
| observation = env.step( | |
| CodeReviewAction(action_type="open_artifact", artifact_id="ticket") | |
| ) | |
| assert observation.done is True | |