main
John Lauer Document the complete KiCad video progression and ship electrical-routing methods with public-board evidence 128b862 1mo ago
import subprocess,tempfile,unittest
from pathlib import Path
ROOT=Path(__file__).resolve().parents[1]
class Install(unittest.TestCase):
 def test_preserves_user_instructions_and_is_idempotent(self):
  with tempfile.TemporaryDirectory() as d:
   home=Path(d);c=home/'.codex';c.mkdir();p=c/'AGENTS.md';p.write_text('Keep my custom instruction.\n');auth=c/'auth.json';auth.write_text('unchanged-fixture')
   def install():subprocess.run(['python3',str(ROOT/'install.py'),'--home',str(home)],check=True,capture_output=True)
   install();first=p.read_bytes();install();self.assertEqual(first,p.read_bytes());self.assertIn('Keep my custom instruction.',p.read_text());self.assertEqual(p.read_text().count('<!-- adom/codex:begin -->'),1);self.assertEqual(auth.read_text(),'unchanged-fixture');self.assertTrue((home/'.local/bin/adom-codex').exists())
   for name in ['codex-adom','codex-adom-showcase','codex-adom-operation-results','codex-adom-routing-video','codex-adom-desktop-artifacts','codex-adom-bridge-workflows','codex-adom-skill-distribution','codex-adom-electrical-routing']:self.assertTrue((c/'skills'/name/'SKILL.md').is_file(),name)
 def test_malformed_block_is_not_overwritten(self):
  with tempfile.TemporaryDirectory() as d:
   p=Path(d)/'.codex/AGENTS.md';p.parent.mkdir();p.write_text('<!-- adom/codex:begin -->\nuser text');before=p.read_bytes()
   r=subprocess.run(['python3',str(ROOT/'install.py'),'--home',d],capture_output=True);self.assertNotEqual(r.returncode,0);self.assertEqual(p.read_bytes(),before)
if __name__=='__main__':unittest.main()