app
KiCad - the KiCad Bridge
Public Made by Adomby adom
Drive your own KiCad from an AI, in the background: open every editor, read the whole board as data (the EDA Bridge Standard board model), stack-up, part heights, netlists, place, route, pour, DRC and exports.
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()