Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """Tests for leaderboard watcher — first_seen tracking.""" | |
| import json | |
| import sys | |
| import tempfile | |
| import unittest | |
| from datetime import datetime, timezone | |
| from pathlib import Path | |
| from unittest.mock import patch | |
| # Make watch.py importable without executing main() | |
| sys.path.insert(0, str(Path(__file__).parent)) | |
| import watch | |
| NOW = datetime(2026, 4, 30, 12, 0, 0, tzinfo=timezone.utc) | |
| NOW_ISO = "2026-04-30T12:00:00+00:00" | |
| class TestMigrateSeen(unittest.TestCase): | |
| def test_list_migrates_to_dict_with_none_timestamps(self): | |
| old = ["modelA", "modelB"] | |
| result = watch.migrate_seen(old) | |
| self.assertEqual(result, {"modelA": None, "modelB": None}) | |
| def test_dict_is_returned_unchanged(self): | |
| existing = {"modelA": "2026-01-01T00:00:00+00:00", "modelB": None} | |
| result = watch.migrate_seen(existing) | |
| self.assertEqual(result, existing) | |
| def test_empty_list_migrates_to_empty_dict(self): | |
| self.assertEqual(watch.migrate_seen([]), {}) | |
| def test_empty_dict_returned_unchanged(self): | |
| self.assertEqual(watch.migrate_seen({}), {}) | |
| class TestDiffModels(unittest.TestCase): | |
| def test_new_models_get_current_timestamp(self): | |
| seen = {"old-model": "2026-01-01T00:00:00+00:00"} | |
| current = ["old-model", "new-model"] | |
| new_ids, updated_seen = watch.diff_models(seen, current, NOW) | |
| self.assertEqual(new_ids, ["new-model"]) | |
| self.assertEqual(updated_seen["new-model"], NOW_ISO) | |
| def test_existing_models_keep_their_timestamp(self): | |
| original_ts = "2026-01-01T00:00:00+00:00" | |
| seen = {"old-model": original_ts} | |
| current = ["old-model"] | |
| _, updated_seen = watch.diff_models(seen, current, NOW) | |
| self.assertEqual(updated_seen["old-model"], original_ts) | |
| def test_existing_model_with_none_timestamp_stays_none(self): | |
| seen = {"old-model": None} | |
| current = ["old-model"] | |
| _, updated_seen = watch.diff_models(seen, current, NOW) | |
| self.assertIsNone(updated_seen["old-model"]) | |
| def test_no_new_models_returns_empty_list(self): | |
| seen = {"a": NOW_ISO, "b": NOW_ISO} | |
| current = ["a", "b"] | |
| new_ids, _ = watch.diff_models(seen, current, NOW) | |
| self.assertEqual(new_ids, []) | |
| def test_all_models_new_when_seen_is_empty(self): | |
| current = ["x", "y"] | |
| new_ids, updated_seen = watch.diff_models({}, current, NOW) | |
| self.assertEqual(sorted(new_ids), ["x", "y"]) | |
| self.assertEqual(updated_seen["x"], NOW_ISO) | |
| self.assertEqual(updated_seen["y"], NOW_ISO) | |
| def test_models_removed_from_leaderboard_are_retained_in_seen(self): | |
| seen = {"gone": "2026-01-01T00:00:00+00:00", "still-here": "2026-01-01T00:00:00+00:00"} | |
| current = ["still-here"] | |
| _, updated_seen = watch.diff_models(seen, current, NOW) | |
| self.assertIn("gone", updated_seen) | |
| self.assertIn("still-here", updated_seen) | |
| class TestStateRoundtrip(unittest.TestCase): | |
| def test_state_saved_and_loaded_preserves_first_seen(self): | |
| with tempfile.TemporaryDirectory() as tmp: | |
| path = Path(tmp) / "state.json" | |
| data = { | |
| "some/dataset": { | |
| "seen": {"modelA": NOW_ISO, "modelB": None}, | |
| "last_checked": NOW_ISO, | |
| "count": 2, | |
| } | |
| } | |
| watch.save_json(path, data) | |
| loaded = watch.load_json(path, {}) | |
| self.assertEqual(loaded["some/dataset"]["seen"]["modelA"], NOW_ISO) | |
| self.assertIsNone(loaded["some/dataset"]["seen"]["modelB"]) | |
| def test_old_state_with_list_seen_is_migrated_on_load(self): | |
| with tempfile.TemporaryDirectory() as tmp: | |
| path = Path(tmp) / "state.json" | |
| old_state = { | |
| "some/dataset": { | |
| "seen": ["modelA", "modelB"], | |
| "last_checked": "2026-04-29T00:00:00+00:00", | |
| "count": 2, | |
| } | |
| } | |
| path.write_text(json.dumps(old_state)) | |
| loaded = watch.load_json(path, {}) | |
| # Migration happens in run_once, not load_json — test the migration utility | |
| ds_state = loaded["some/dataset"] | |
| migrated = watch.migrate_seen(ds_state["seen"]) | |
| self.assertIsInstance(migrated, dict) | |
| self.assertIsNone(migrated["modelA"]) | |
| self.assertIsNone(migrated["modelB"]) | |
| if __name__ == "__main__": | |
| unittest.main() | |