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
import sys, tempfile, unittest
from pathlib import Path
from unittest.mock import patch
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
import adom_library
from handlers import install_footprint
class ListFootprints(unittest.TestCase):
def test_stock_library_from_table(self):
with tempfile.TemporaryDirectory() as d:
base = Path(d) / "kicad"; share = base / "share" / "kicad" / "footprints" / "Resistor_SMD.pretty"; share.mkdir(parents=True)
(share / "R_0603_1608Metric.kicad_mod").write_text("(footprint)")
cfg = Path(d) / "cfg"; cfg.mkdir(); user = Path(d) / "user"; (user / "footprints" / "Adom.pretty").mkdir(parents=True)
(user / "footprints" / "Adom.pretty" / "X.kicad_mod").write_text("(footprint)")
(cfg / "fp-lib-table").write_text('(fp_lib_table\n (version 7)\n (lib (name "Resistor_SMD")(type "KiCad")(uri "${KICAD10_FOOTPRINT_DIR}/Resistor_SMD.pretty")(options "")(descr ""))\n)\n')
info = {"version": "10.0", "base_dir": str(base), "user_dir": str(user), "config_dir": str(cfg)}
with patch.object(adom_library, "_kicad_env_overrides", return_value={}):
r = install_footprint.handle_list_footprints(info, {"library": "Resistor_SMD"})
self.assertEqual(r["libraries"]["Resistor_SMD"]["footprints"], ["R_0603_1608Metric"])
r = install_footprint.handle_list_footprints(info, {})
self.assertEqual(sorted(r["libraries"]), ["Adom", "Resistor_SMD"])
if __name__ == "__main__":
unittest.main()