master
John Lauer 0.9.341: verb-test runner (full coverage, foreground victim rule, user discovery, pcbnew ping), routing/readiness/libra… 4768cda 2mo ago
import sys, unittest
from pathlib import Path
from unittest.mock import patch
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
import server

class Refresh(unittest.TestCase):
    def test_vanished_exe_triggers_redetect(self):
        with patch.object(server, "all_kicad_versions", [{"version": "10.0", "kicad_exe": "/nonexistent/kicad.exe"}]), \
             patch.object(server, "detect_all_kicad_versions", return_value=[]):
            r = server._handle_readiness({}, {})
            self.assertFalse(r["detected"]); self.assertEqual(r["versionCount"], 0)
    def test_present_exe_keeps_cache(self):
        exe = str(Path(__file__).resolve())
        with patch.object(server, "all_kicad_versions", [{"version": "10.0", "kicad_exe": exe}]), \
             patch.object(server, "detect_all_kicad_versions", side_effect=AssertionError("must not re-detect")):
            r = server._handle_readiness({}, {})
            self.assertTrue(r["detected"]); self.assertEqual(r["versions"][0]["exePath"], exe)

if __name__ == "__main__":
    unittest.main()