Run problem tests using eval-snapshot instead of raw pytest. Use this to evaluate solutions against benchmark tests in Docker. Invoke with /run-tests <snapshot_path> <problem_name> <checkpoint_index>.
Run benchmark problem tests using the eval-snapshot command instead of raw pytest. This ensures tests run in the correct Docker environment with proper isolation.
Usage: /run-tests <snapshot_path> <problem_name> <checkpoint_index>
Example: /run-tests outputs/run_001/submissions/file_backup/checkpoint_2/snapshot file_backup checkpoint_2
slop-code --quiet eval-snapshot {snapshot_path} \
-p {problem_name} \
-c {checkpoint_index} \
-e configs/environments/docker-python3.12-uv.yaml \
-o /tmp/eval-output \
--json
Parameters:
snapshot_path: Path to the solution directory to testproblem_name: Name of the problem (e.g., file_backup, execution_server)checkpoint_index: Checkpoint to evaluate (e.g., checkpoint_1, checkpoint_2)Results are saved to the output directory (/tmp/eval-output by default):
/tmp/eval-output/
├── evaluation.json # Structured test results
├── evaluation.log # Detailed execution log
└── quality_analysis/ # Code quality metrics
├── ast_grep.jsonl # AST-grep rule matches
├── files.jsonl # File-level metrics
├── overall_quality.json # Aggregated quality scores
└── symbols.jsonl # Symbol/function metrics
{
"problem_name": "eve_industry",
"checkpoint_name": "checkpoint_3",
"duration": 34.71,
"entrypoint": "uv run industry.py",
"tests": [
{
"id": "test_naga",
"checkpoint": "checkpoint_1",
"group_type": "Regression",
"status": "passed",
"duration_ms": 1029.27,
"file_path": ".evaluation_tests/test_checkpoint_1.py"
}
],
"pass_counts": {
"Regression": 25,
"Core": 5,
"Functionality": 5
},
"total_counts": {
"Regression": 26,
"Core": 5,
"Functionality": 5
},
"pytest_exit_code": 1,
"pytest_collected": 36,
"infrastructure_failure": false
}
| Field | Description |
|-------|-------------|
| tests | Array of individual test results |
| pass_counts | Passed tests by group type |
| total_counts | Total tests by group type |
| pytest_exit_code | 0 = all passed, 1 = some failed |
| infrastructure_failure | True if environment setup failed |
| Group | Description |
|-------|-------------|
| Core | Must pass for checkpoint to pass |
| Functionality | Additional coverage (optional) |
| Regression | Tests from prior checkpoints |
| Error | Error handling tests |
# Parse with jq to get summary
cat /tmp/eval-output/evaluation.json | jq '{
passed: .pass_counts,
total: .total_counts,
exit_code: .pytest_exit_code
}'
# List failed tests
cat /tmp/eval-output/evaluation.json | jq '.tests[] | select(.status == "failed") | .id'
# Core tests (must all pass)
cat /tmp/eval-output/evaluation.json | jq '.pass_counts.Core == .total_counts.Core'
slop-code --quiet eval-snapshot ./snapshot \
-p file_backup -c checkpoint_1 \
-e configs/environments/docker-python3.12-uv.yaml \
-o /tmp/eval-output --json
# Check if passed
if [ $(cat /tmp/eval-output/evaluation.json | jq '.pytest_exit_code') -eq 0 ]; then
echo "All tests passed!"
else
echo "Some tests failed"
cat /tmp/eval-output/evaluation.json | jq '.tests[] | select(.status == "failed")'
fi
for checkpoint in checkpoint_1 checkpoint_2 checkpoint_3; do
echo "=== $checkpoint ==="
slop-code --quiet eval-snapshot ./submissions/$checkpoint/snapshot \
-p my_problem -c $checkpoint \
-e configs/environments/docker-python3.12-uv.yaml \
-o /tmp/eval-$checkpoint --json
cat /tmp/eval-$checkpoint/evaluation.json | jq '.pass_counts'
done
If infrastructure_failure: true:
evaluation.log for detailsIf pytest_collected: 0:
Default timeout is 180s per test. For long-running tests, this is controlled in the problem's pytest config.
eval-snapshot instead of raw pytest for benchmark problems--json flag to get machine-readable output-o flag specifies where to save resultsSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer