Spaces:
Sleeping
Sleeping
| """ | |
| Simulates EXACTLY what the Scaler validator does: | |
| 1. Import grader classes from openenv.yaml paths | |
| 2. Instantiate each class | |
| 3. Call .grade(env) or .grade(None) | |
| 4. Check score is strictly in (0.01, 0.99) | |
| Run: python test_validator_simulation.py | |
| """ | |
| import sys | |
| import os | |
| # Add project root to path | |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | |
| def test_grader_classes(): | |
| print("=" * 60) | |
| print("VALIDATOR SIMULATION: Testing grader classes") | |
| print("=" * 60) | |
| from server.graders.grader_api import ( | |
| Task1Grader, Task2Grader, Task3Grader, | |
| Task4Grader, Task5Grader, Task6Grader, Task7Grader, | |
| ) | |
| graders = { | |
| "task1_json": Task1Grader(), | |
| "task2_yaml": Task2Grader(), | |
| "task3_dockerfile": Task3Grader(), | |
| "task4_compose": Task4Grader(), | |
| "task5_k8s": Task5Grader(), | |
| "task6_github_actions": Task6Grader(), | |
| "task7_nginx": Task7Grader(), | |
| } | |
| all_pass = True | |
| for task_id, grader in graders.items(): | |
| # Test 1: .grade(None) β validator may call with None | |
| score_none = grader.grade(None) | |
| ok_none = 0.0 < score_none < 1.0 | |
| # Test 2: .grade(env) β validator passes environment | |
| from server.config_debug_environment import ConfigDebugEnvironment | |
| env = ConfigDebugEnvironment() | |
| env.reset(task_id=task_id) | |
| score_env = grader.grade(env) | |
| ok_env = 0.0 < score_env < 1.0 | |
| # Test 3: .grade(ground_truth_string) β direct string | |
| from server.tasks.task_registry import get_task | |
| task = get_task(task_id) | |
| score_gt = grader.grade(task.ground_truth) | |
| ok_gt = 0.0 < score_gt < 1.0 | |
| status = "PASS" if (ok_none and ok_env and ok_gt) else "FAIL" | |
| if not (ok_none and ok_env and ok_gt): | |
| all_pass = False | |
| print(f"\n[{status}] {task_id}") | |
| print(f" .grade(None) = {score_none:.4f} {'OK' if ok_none else 'OUT OF RANGE!'}") | |
| print(f" .grade(env) = {score_env:.4f} {'OK' if ok_env else 'OUT OF RANGE!'}") | |
| print(f" .grade(ground_truth) = {score_gt:.4f} {'OK' if ok_gt else 'OUT OF RANGE!'}") | |
| # Strict check | |
| if score_none == 0.0 or score_none == 1.0: | |
| print(f" FATAL: score is exactly {score_none} β validator rejects 0.0 and 1.0!") | |
| all_pass = False | |
| if score_env == 0.0 or score_env == 1.0: | |
| print(f" FATAL: score is exactly {score_env} β validator rejects 0.0 and 1.0!") | |
| all_pass = False | |
| if score_gt == 0.0 or score_gt == 1.0: | |
| print(f" FATAL: score is exactly {score_gt} β validator rejects 0.0 and 1.0!") | |
| all_pass = False | |
| print("\n" + "=" * 60) | |
| if all_pass: | |
| print("ALL TASKS PASSED β safe to push and submit!") | |
| else: | |
| print("SOME TASKS FAILED β fix before pushing!") | |
| print("=" * 60) | |
| def test_docker_verification(): | |
| """The exact Docker test command from the Meta AI email.""" | |
| print("\n\nDOCKER VERIFICATION EQUIVALENT:") | |
| print("-" * 40) | |
| from server.graders.grader_api import ( | |
| Task1Grader, Task2Grader, Task3Grader, | |
| Task4Grader, Task5Grader, Task6Grader, Task7Grader, | |
| ) | |
| for name, cls in [ | |
| ("Task1Grader", Task1Grader), | |
| ("Task2Grader", Task2Grader), | |
| ("Task3Grader", Task3Grader), | |
| ("Task4Grader", Task4Grader), | |
| ("Task5Grader", Task5Grader), | |
| ("Task6Grader", Task6Grader), | |
| ("Task7Grader", Task7Grader), | |
| ]: | |
| score = cls().grade(None) | |
| print(f"{name}().grade(None) = {score}") | |
| if __name__ == "__main__": | |
| test_grader_classes() | |
| test_docker_verification() | |