diff --git a/qa/data/cli/basic_test/basic_test.kicad_pcb b/qa/data/cli/basic_test/basic_test.kicad_pcb
new file mode 100644
index 0000000000..25ee0a0aa1
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.kicad_pcb
@@ -0,0 +1,1696 @@
+(kicad_pcb (version 20221018) (generator pcbnew)
+
+ (general
+ (thickness 1.6)
+ )
+
+ (paper "A4")
+ (title_block
+ (title "Awesome LPF")
+ (date "2023-04-28")
+ (rev "1")
+ (company "KiCad")
+ )
+
+ (layers
+ (0 "F.Cu" signal)
+ (31 "B.Cu" signal)
+ (32 "B.Adhes" user "B.Adhesive")
+ (33 "F.Adhes" user "F.Adhesive")
+ (34 "B.Paste" user)
+ (35 "F.Paste" user)
+ (36 "B.SilkS" user "B.Silkscreen")
+ (37 "F.SilkS" user "F.Silkscreen")
+ (38 "B.Mask" user)
+ (39 "F.Mask" user)
+ (40 "Dwgs.User" user "User.Drawings")
+ (41 "Cmts.User" user "User.Comments")
+ (42 "Eco1.User" user "User.Eco1")
+ (43 "Eco2.User" user "User.Eco2")
+ (44 "Edge.Cuts" user)
+ (45 "Margin" user)
+ (46 "B.CrtYd" user "B.Courtyard")
+ (47 "F.CrtYd" user "F.Courtyard")
+ (48 "B.Fab" user)
+ (49 "F.Fab" user)
+ (50 "User.1" user)
+ (51 "User.2" user)
+ (52 "User.3" user)
+ (53 "User.4" user)
+ (54 "User.5" user)
+ (55 "User.6" user)
+ (56 "User.7" user)
+ (57 "User.8" user)
+ (58 "User.9" user)
+ )
+
+ (setup
+ (pad_to_mask_clearance 0)
+ (pcbplotparams
+ (layerselection 0x00010fc_ffffffff)
+ (plot_on_all_layers_selection 0x0000000_00000000)
+ (disableapertmacros false)
+ (usegerberextensions false)
+ (usegerberattributes true)
+ (usegerberadvancedattributes true)
+ (creategerberjobfile true)
+ (dashed_line_dash_ratio 12.000000)
+ (dashed_line_gap_ratio 3.000000)
+ (svgprecision 4)
+ (plotframeref false)
+ (viasonmask false)
+ (mode 1)
+ (useauxorigin false)
+ (hpglpennumber 1)
+ (hpglpenspeed 20)
+ (hpglpendiameter 15.000000)
+ (dxfpolygonmode true)
+ (dxfimperialunits true)
+ (dxfusepcbnewfont true)
+ (psnegative false)
+ (psa4output false)
+ (plotreference true)
+ (plotvalue true)
+ (plotinvisibletext false)
+ (sketchpadsonfab false)
+ (subtractmaskfromsilk false)
+ (outputformat 1)
+ (mirror false)
+ (drillshape 1)
+ (scaleselection 1)
+ (outputdirectory "")
+ )
+ )
+
+ (net 0 "")
+ (net 1 "GND")
+ (net 2 "Net-(U1-+)")
+ (net 3 "Net-(U1--)")
+ (net 4 "/VCC")
+ (net 5 "/IN")
+ (net 6 "/OUT")
+
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm" (layer "F.Cu")
+ (tstamp 1390739f-0b91-4d50-b8ae-92acd725ec51)
+ (at 200.8 156.6)
+ (descr "SMD rectangular pad as test Point, square 3.0mm side length")
+ (tags "test point SMD pad rectangle square")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Generic connector, single row, 01x01, script generated")
+ (property "ki_keywords" "connector")
+ (path "/203ec3c1-122c-4087-8f6d-2a0dd0b941e6")
+ (attr exclude_from_pos_files)
+ (fp_text reference "J1" (at 0 -2.398) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp c402ec1d-df0d-40ce-b9d6-f08ac19c7c42)
+ )
+ (fp_text value "Conn_01x01_Pin" (at 0 2.55) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp c61baf68-4b03-4f7f-b652-412be8113d00)
+ )
+ (fp_text user "${REFERENCE}" (at 0 -2.4) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp d9577952-4e8d-477c-8f6d-723533579833)
+ )
+ (fp_line (start -1.7 -1.7) (end 1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 5affe134-784a-41e6-af7c-46b23a03b320))
+ (fp_line (start -1.7 1.7) (end -1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp d20cfa67-660e-4316-9c07-b533ec4c6b60))
+ (fp_line (start 1.7 -1.7) (end 1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp f760b864-488a-40b2-9b55-1cb2d80f5b76))
+ (fp_line (start 1.7 1.7) (end -1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp b69639f7-6a20-44b4-828a-38174f3197fc))
+ (fp_line (start -2 -2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 23f10dc0-019c-453d-b631-408b3248f395))
+ (fp_line (start -2 -2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp bd80a489-4a51-423e-aa10-6b5530b09b91))
+ (fp_line (start 2 2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 3eb888ec-5420-49ca-a908-9d695cd023b3))
+ (fp_line (start 2 2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 88777fb0-4523-4748-b3c1-bc84cbdfe155))
+ (pad "1" smd rect (at 0 0) (size 3 3) (layers "F.Cu" "F.Mask")
+ (net 4 "/VCC") (pinfunction "Pin_1") (pintype "passive") (tstamp df72ab8d-9b14-4015-a2dc-781750ca0d55))
+ )
+
+ (footprint "Package_TO_SOT_SMD:SOT-23-5" (layer "F.Cu")
+ (tstamp 46ee94d1-977a-45b0-a3f4-b6f45331a22d)
+ (at 201.9 145.3 180)
+ (descr "SOT, 5 Pin (https://www.jedec.org/sites/default/files/docs/Mo-178c.PDF variant AA), generated with kicad-footprint-generator ipc_gullwing_generator.py")
+ (tags "SOT TO_SOT_SMD")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Rail-to-Rail Input/Output Operational Amplifier, SOT-23-5")
+ (property "ki_keywords" "single opamp")
+ (path "/b8a40376-5e4f-459f-9886-5e9ee83698cf")
+ (attr smd)
+ (fp_text reference "U1" (at 0 -2.4) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp bfad795c-4b8c-4327-8266-ba0993b9afbb)
+ )
+ (fp_text value "TLV2371DBV" (at 0 2.4) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 4bb5fc3d-fbb4-4ac0-8249-d5ee63314e61)
+ )
+ (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.4 0.4) (thickness 0.06)))
+ (tstamp ba65195d-d8a7-4cb3-9484-e697c6b79866)
+ )
+ (fp_line (start 0 -1.56) (end -1.8 -1.56)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp b51097ce-8483-41cd-8f84-3ee55f491ecd))
+ (fp_line (start 0 -1.56) (end 0.8 -1.56)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 6ede3a08-77a5-4246-a719-726d97b93959))
+ (fp_line (start 0 1.56) (end -0.8 1.56)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 88be5486-6a92-4277-8f41-0946cd1024eb))
+ (fp_line (start 0 1.56) (end 0.8 1.56)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp b096345d-7ed7-4e7c-9d92-3c9b943f7da2))
+ (fp_line (start -2.05 -1.7) (end -2.05 1.7)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp e2946aeb-0e16-457a-994e-d6cbe0e82111))
+ (fp_line (start -2.05 1.7) (end 2.05 1.7)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a99b1c3e-0efc-4399-8f55-9512d1b4e6a0))
+ (fp_line (start 2.05 -1.7) (end -2.05 -1.7)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp c156e750-1b42-4970-a0ea-8eb63e8b177a))
+ (fp_line (start 2.05 1.7) (end 2.05 -1.7)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 18bb65b3-b1d6-424b-9a86-15fd6507c5d8))
+ (fp_line (start -0.8 -1.05) (end -0.4 -1.45)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 3d54da5c-8fa2-45b9-bbfa-c67ad517ae24))
+ (fp_line (start -0.8 1.45) (end -0.8 -1.05)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp de14f44f-d67f-4f96-8008-229734a4c368))
+ (fp_line (start -0.4 -1.45) (end 0.8 -1.45)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp f2670ff0-f7df-4df7-bae1-1ec0a52e5790))
+ (fp_line (start 0.8 -1.45) (end 0.8 1.45)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp a7e78ea6-3261-46fa-92d2-993a3a6092e4))
+ (fp_line (start 0.8 1.45) (end -0.8 1.45)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 0c99aad9-5ac5-417b-b18e-f578b533e38c))
+ (pad "1" smd roundrect (at -1.1375 -0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
+ (net 6 "/OUT") (pintype "output") (tstamp 6ecc4c59-b18b-4bb6-902d-7f60294b8c2c))
+ (pad "2" smd roundrect (at -1.1375 0 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
+ (net 1 "GND") (pinfunction "V-") (pintype "power_in") (tstamp d597c756-5560-4537-9610-7b6c0708cee7))
+ (pad "3" smd roundrect (at -1.1375 0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
+ (net 2 "Net-(U1-+)") (pinfunction "+") (pintype "input") (tstamp 6dc4469c-a461-4514-a9c4-49b356bfb05c))
+ (pad "4" smd roundrect (at 1.1375 0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
+ (net 3 "Net-(U1--)") (pinfunction "-") (pintype "input") (tstamp 9a78eba5-f755-4036-8bcc-28f230d9ce20))
+ (pad "5" smd roundrect (at 1.1375 -0.95 180) (size 1.325 0.6) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.25)
+ (net 4 "/VCC") (pinfunction "V+") (pintype "power_in") (tstamp 18587219-dc3e-459e-8761-5e60b9e45e5a))
+ (model "${KICAD6_3DMODEL_DIR}/Package_TO_SOT_SMD.3dshapes/SOT-23-5.wrl"
+ (offset (xyz 0 0 0))
+ (scale (xyz 1 1 1))
+ (rotate (xyz 0 0 0))
+ )
+ )
+
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm" (layer "F.Cu")
+ (tstamp 7cb3954f-ecbc-4d4a-948f-f385aacc2198)
+ (at 218 146)
+ (descr "SMD rectangular pad as test Point, square 3.0mm side length")
+ (tags "test point SMD pad rectangle square")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Generic connector, single row, 01x01, script generated")
+ (property "ki_keywords" "connector")
+ (path "/9efa520e-00e1-47a2-b8dc-bf8e2121d065")
+ (attr exclude_from_pos_files)
+ (fp_text reference "J3" (at 0 -2.398) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp dafed00d-db1c-46f6-a01d-55f390a6120f)
+ )
+ (fp_text value "Conn_01x01_Pin" (at 0 2.55) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp de5e9eba-5ad4-4c13-870a-6a640da893e2)
+ )
+ (fp_text user "${REFERENCE}" (at 0 -2.4) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 9968eedd-dad6-47d6-bfe6-6c8d22a30dc7)
+ )
+ (fp_line (start -1.7 -1.7) (end 1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp bed3bc55-d879-4a42-8a6b-4aee1b085121))
+ (fp_line (start -1.7 1.7) (end -1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp f9729fd1-4989-4250-a89f-5e3fd131063e))
+ (fp_line (start 1.7 -1.7) (end 1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 2c63b408-7523-46a4-8529-f2e2d9907792))
+ (fp_line (start 1.7 1.7) (end -1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 644acc0e-33a9-4bf7-91d9-0455ab423bde))
+ (fp_line (start -2 -2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 5c2c2858-669d-4c7f-a703-c72a9f739e61))
+ (fp_line (start -2 -2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 939ee0b1-9583-4935-8e76-ca54b4d88df0))
+ (fp_line (start 2 2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a3a335d2-923f-4a31-aac3-7db40f115121))
+ (fp_line (start 2 2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ecf7c3fa-5412-4d9e-9705-2adef48e1440))
+ (pad "1" smd rect (at 0 0) (size 3 3) (layers "F.Cu" "F.Mask")
+ (net 6 "/OUT") (pinfunction "Pin_1") (pintype "passive") (tstamp 379851fb-1c9b-4946-a532-2dd0a5d0af27))
+ )
+
+ (footprint "Resistor_SMD:R_1206_3216Metric" (layer "F.Cu")
+ (tstamp 84d75378-f03e-476c-badf-38e6fb8d9772)
+ (at 198 145 -90)
+ (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
+ (tags "resistor")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Resistor, US symbol")
+ (property "ki_keywords" "R res resistor")
+ (path "/8b2eeae5-e1ad-4999-aeb9-01fe06aff8b1")
+ (attr smd)
+ (fp_text reference "R2" (at 0 2 90) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp af3f3793-65cb-419e-a8db-19f076fda395)
+ )
+ (fp_text value "10k" (at 0 1.82 90) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 0889d219-f635-4ee9-8a29-88efeb2cc262)
+ )
+ (fp_text user "${REFERENCE}" (at 0 0 90) (layer "F.Fab")
+ (effects (font (size 0.8 0.8) (thickness 0.12)))
+ (tstamp a286735f-5ca8-4f3d-b0ff-6f7e5b05b603)
+ )
+ (fp_line (start -0.727064 -0.91) (end 0.727064 -0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp afe6a5d3-1d1e-4997-a970-28d98df802af))
+ (fp_line (start -0.727064 0.91) (end 0.727064 0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 762674b4-b36b-427e-8d68-c76ce91117c8))
+ (fp_line (start -2.28 -1.12) (end 2.28 -1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 49e8cd9d-ec4b-410e-a141-0324a659ebdb))
+ (fp_line (start -2.28 1.12) (end -2.28 -1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a54a7317-0491-4f2e-b718-a2e35529f959))
+ (fp_line (start 2.28 -1.12) (end 2.28 1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 2829d769-dd74-40e2-9cc4-a3f9453fd468))
+ (fp_line (start 2.28 1.12) (end -2.28 1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ed3883c5-34a9-4439-b478-f5b8d85f27f9))
+ (fp_line (start -1.6 -0.8) (end 1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 6934866d-b0be-4340-be9e-8b09165edbe0))
+ (fp_line (start -1.6 0.8) (end -1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp da8b5def-da5a-40a4-9fd5-0f364f2f259a))
+ (fp_line (start 1.6 -0.8) (end 1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 2399eafb-1404-4e13-97fb-2d92a3a71b01))
+ (fp_line (start 1.6 0.8) (end -1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp eaee3543-6d4b-48b1-ac60-2728f1372f84))
+ (pad "1" smd roundrect (at -1.4625 0 270) (size 1.125 1.75) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.222222)
+ (net 3 "Net-(U1--)") (pintype "passive") (tstamp 872d9f99-b956-4565-af38-aed2f3936357))
+ (pad "2" smd roundrect (at 1.4625 0 270) (size 1.125 1.75) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.222222)
+ (net 6 "/OUT") (pintype "passive") (tstamp 52d92644-bc54-4ae7-bf57-4529a3ceadef))
+ (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl"
+ (offset (xyz 0 0 0))
+ (scale (xyz 1 1 1))
+ (rotate (xyz 0 0 0))
+ )
+ )
+
+ (footprint "Resistor_SMD:R_1206_3216Metric" (layer "F.Cu")
+ (tstamp 9ba418c8-2eec-4809-8f5b-d46c1151991e)
+ (at 197 141)
+ (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
+ (tags "resistor")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Resistor, US symbol")
+ (property "ki_keywords" "R res resistor")
+ (path "/eaf8668d-aec7-4209-a3f9-fc7bfb5b931b")
+ (attr smd)
+ (fp_text reference "R1" (at 0 -1.82) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp ed6a314d-8b73-4e08-b13e-4c00cc1ba207)
+ )
+ (fp_text value "10k" (at 0 1.82) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 932bc526-a5eb-45a3-8799-cdcfe36751d8)
+ )
+ (fp_text user "${REFERENCE}" (at 0.205 2.93) (layer "F.Fab")
+ (effects (font (size 0.8 0.8) (thickness 0.12)))
+ (tstamp 70488729-1251-47fa-981e-4a5cfedb7f86)
+ )
+ (fp_line (start -0.727064 -0.91) (end 0.727064 -0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 1cdfd649-de93-4e71-ace4-9115786d8802))
+ (fp_line (start -0.727064 0.91) (end 0.727064 0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp faa365e2-ea38-4930-a091-0b903304cb55))
+ (fp_line (start -2.28 -1.12) (end 2.28 -1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp fdc11395-9bb6-45be-ba0e-71cfcb784b95))
+ (fp_line (start -2.28 1.12) (end -2.28 -1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp f27ebd0e-2d72-421d-a98d-e9340374bbb1))
+ (fp_line (start 2.28 -1.12) (end 2.28 1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 9a53e238-edf6-4c27-bfdc-00e977825227))
+ (fp_line (start 2.28 1.12) (end -2.28 1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp a73f6f71-a4d4-4127-b20d-4334ad74d863))
+ (fp_line (start -1.6 -0.8) (end 1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp c70709c3-04cc-4be4-9479-cbd2ce14f16d))
+ (fp_line (start -1.6 0.8) (end -1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp fab1e776-f259-49a9-937a-2c3f45313fcb))
+ (fp_line (start 1.6 -0.8) (end 1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp b812b044-1fc1-4678-8a2b-c2bcb9f036e7))
+ (fp_line (start 1.6 0.8) (end -1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp d873023b-4cb3-4dc4-9c2d-4ac7b0c7481a))
+ (pad "1" smd roundrect (at -1.4625 0) (size 1.125 1.75) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.222222)
+ (net 1 "GND") (pintype "passive") (tstamp 1fdb11e5-7eb9-4037-9bc8-f60c4dc210e1))
+ (pad "2" smd roundrect (at 1.4625 0) (size 1.125 1.75) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.222222)
+ (net 3 "Net-(U1--)") (pintype "passive") (tstamp a3c810a4-1e7c-4f95-bfb0-381afb0d6d86))
+ (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl"
+ (offset (xyz 0 0 0))
+ (scale (xyz 1 1 1))
+ (rotate (xyz 0 0 0))
+ )
+ )
+
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm" (layer "F.Cu")
+ (tstamp 9bcb01a9-2bff-45c9-bb09-f3c9476a6e17)
+ (at 193 147)
+ (descr "SMD rectangular pad as test Point, square 3.0mm side length")
+ (tags "test point SMD pad rectangle square")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Generic connector, single row, 01x01, script generated")
+ (property "ki_keywords" "connector")
+ (path "/2a9f5f63-d864-4898-ae3e-539c635e8f2c")
+ (attr exclude_from_pos_files)
+ (fp_text reference "J2" (at 0 -2.398) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp e297df1f-d90d-4c09-83db-72bdd7b5d05e)
+ )
+ (fp_text value "Conn_01x01_Pin" (at 0 2.55) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp c5db08e7-7368-4051-abe1-40c3e5554b1e)
+ )
+ (fp_text user "${REFERENCE}" (at 0 -2.4) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp d2b06c8a-2d69-49b6-98be-3fbe4a39dd17)
+ )
+ (fp_line (start -1.7 -1.7) (end 1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 91848f22-f7be-4953-8c8d-71cac613cda2))
+ (fp_line (start -1.7 1.7) (end -1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp dc938bd0-2299-499c-8815-ccdc4fcf08ce))
+ (fp_line (start 1.7 -1.7) (end 1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp e0124998-174c-48e9-8d0e-18ae8ddef5ae))
+ (fp_line (start 1.7 1.7) (end -1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 8fe63d6e-e60f-4fcd-9909-493bdfe067ae))
+ (fp_line (start -2 -2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 9d426986-474c-407b-ab72-23c3ab1ad262))
+ (fp_line (start -2 -2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 29b09084-9f3c-43c4-aa82-094b439b9f32))
+ (fp_line (start 2 2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp dcd4818f-1ad2-46c1-ac05-fc6ad393833a))
+ (fp_line (start 2 2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 8f2e9069-edbc-4b1a-a53e-f45d05996b33))
+ (pad "1" smd rect (at 0 0) (size 3 3) (layers "F.Cu" "F.Mask")
+ (net 5 "/IN") (pinfunction "Pin_1") (pintype "passive") (tstamp 9c5d773a-2c0f-45e2-827f-52aeafdc1aa2))
+ )
+
+ (footprint "Resistor_SMD:R_1206_3216Metric" (layer "F.Cu")
+ (tstamp cfe1ba2c-d301-4a4b-b0fe-608ede2e0767)
+ (at 204 151)
+ (descr "Resistor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 72, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
+ (tags "resistor")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Resistor, US symbol")
+ (property "ki_keywords" "R res resistor")
+ (path "/985a669c-9a7f-4b74-bb4f-9487b164d3aa")
+ (attr smd)
+ (fp_text reference "R3" (at 0 -1.82) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 81397456-3d69-4233-80fa-2676b6aafb29)
+ )
+ (fp_text value "10k" (at 0 1.82) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 82ebd18a-0eee-4b26-a1b7-a7b31a22d365)
+ )
+ (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.8 0.8) (thickness 0.12)))
+ (tstamp 04d46550-4719-4b68-b50b-22eb7b01db03)
+ )
+ (fp_line (start -0.727064 -0.91) (end 0.727064 -0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 80ab45a6-f1b5-4e67-a826-1aee33156f6b))
+ (fp_line (start -0.727064 0.91) (end 0.727064 0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 33d6a424-6642-46a1-9ec0-7fd1aced659e))
+ (fp_line (start -2.28 -1.12) (end 2.28 -1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp d6798e30-92d3-4b14-a00b-3a817ea230f8))
+ (fp_line (start -2.28 1.12) (end -2.28 -1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 7c954754-b649-4e20-8c9c-06c59994d246))
+ (fp_line (start 2.28 -1.12) (end 2.28 1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp de2c8fd5-91ad-4a4f-9e24-b883754954eb))
+ (fp_line (start 2.28 1.12) (end -2.28 1.12)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 1ef1ffac-9fb5-4e87-a5be-c34e346e5033))
+ (fp_line (start -1.6 -0.8) (end 1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 97b75da2-f6ee-4c05-8dab-f1949d211cb6))
+ (fp_line (start -1.6 0.8) (end -1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 4ff93c23-41c2-42c6-8c8f-ef262b6734c2))
+ (fp_line (start 1.6 -0.8) (end 1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 26f3bdf7-70c6-43dc-8fb9-c5c11f9b8e94))
+ (fp_line (start 1.6 0.8) (end -1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 58557ae5-819a-4c49-9d29-3831d5762464))
+ (pad "1" smd roundrect (at -1.4625 0) (size 1.125 1.75) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.222222)
+ (net 5 "/IN") (pintype "passive") (tstamp ad4725b5-cfd0-4a5d-8319-7ea59e11d3dd))
+ (pad "2" smd roundrect (at 1.4625 0) (size 1.125 1.75) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.222222)
+ (net 2 "Net-(U1-+)") (pintype "passive") (tstamp 48329b63-2ce9-4724-b55f-9fa153f95ea9))
+ (model "${KICAD6_3DMODEL_DIR}/Resistor_SMD.3dshapes/R_1206_3216Metric.wrl"
+ (offset (xyz 0 0 0))
+ (scale (xyz 1 1 1))
+ (rotate (xyz 0 0 0))
+ )
+ )
+
+ (footprint "Capacitor_SMD:C_1206_3216Metric" (layer "F.Cu")
+ (tstamp db9388ac-163d-40bc-be40-37f8cd7f2c2a)
+ (at 207.5 145.9)
+ (descr "Capacitor SMD 1206 (3216 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: IPC-SM-782 page 76, https://www.pcb-3d.com/wordpress/wp-content/uploads/ipc-sm-782a_amendment_1_and_2.pdf), generated with kicad-footprint-generator")
+ (tags "capacitor")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Unpolarized capacitor, small symbol")
+ (property "ki_keywords" "capacitor cap")
+ (path "/8a4f4d93-4e0c-474b-8535-68c4fef6e828")
+ (attr smd)
+ (fp_text reference "C1" (at 0 -1.85) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 63bcac6b-f1d7-4eee-988b-e6cea6715e01)
+ )
+ (fp_text value "10u" (at 4 -0.3) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 7f205ae8-f5d4-461c-9d99-65ec6a7a22ba)
+ )
+ (fp_text user "${REFERENCE}" (at 0 0) (layer "F.Fab")
+ (effects (font (size 0.8 0.8) (thickness 0.12)))
+ (tstamp c1c3323c-1a81-4c2c-8767-67a942e80a28)
+ )
+ (fp_line (start -0.711252 -0.91) (end 0.711252 -0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 47bd530b-7f76-4ec5-b56b-c43ab918e9d7))
+ (fp_line (start -0.711252 0.91) (end 0.711252 0.91)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp b237fa10-56fd-4d2f-b731-712dd614f8fe))
+ (fp_line (start -2.3 -1.15) (end 2.3 -1.15)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 04e1156c-315e-405f-9a03-ac1049e2c2de))
+ (fp_line (start -2.3 1.15) (end -2.3 -1.15)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp ce55659e-4f35-4767-9988-84466a71e44d))
+ (fp_line (start 2.3 -1.15) (end 2.3 1.15)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp b4bce62a-8dcf-4e30-93f8-c6ab5ad69566))
+ (fp_line (start 2.3 1.15) (end -2.3 1.15)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 75849174-c9e9-42a4-9a7b-400957963a9e))
+ (fp_line (start -1.6 -0.8) (end 1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 579bcf29-20b4-4792-a5cb-776184708ded))
+ (fp_line (start -1.6 0.8) (end -1.6 -0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7462b436-dc0c-4fb0-b25f-add05146e971))
+ (fp_line (start 1.6 -0.8) (end 1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp 7f30a39e-9eb9-40cf-9a74-a5be0e35ad49))
+ (fp_line (start 1.6 0.8) (end -1.6 0.8)
+ (stroke (width 0.1) (type solid)) (layer "F.Fab") (tstamp c91ac925-0e81-4008-92e2-7cd058480ad5))
+ (pad "1" smd roundrect (at -1.475 0) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.217391)
+ (net 2 "Net-(U1-+)") (pintype "passive") (tstamp fd2ecf18-0d07-4c82-adf6-4f0bfea73d0c))
+ (pad "2" smd roundrect (at 1.475 0) (size 1.15 1.8) (layers "F.Cu" "F.Paste" "F.Mask") (roundrect_rratio 0.217391)
+ (net 1 "GND") (pintype "passive") (tstamp 1ab9efcd-99d6-4d4e-af49-0d765086e196))
+ (model "${KICAD6_3DMODEL_DIR}/Capacitor_SMD.3dshapes/C_1206_3216Metric.wrl"
+ (offset (xyz 0 0 0))
+ (scale (xyz 1 1 1))
+ (rotate (xyz 0 0 0))
+ )
+ )
+
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm" (layer "F.Cu")
+ (tstamp f4673e4d-d9f7-4c2a-a854-c35665e7dbd9)
+ (at 209 156.6)
+ (descr "SMD rectangular pad as test Point, square 3.0mm side length")
+ (tags "test point SMD pad rectangle square")
+ (property "Sheetfile" "CliTest.kicad_sch")
+ (property "Sheetname" "")
+ (property "ki_description" "Generic connector, single row, 01x01, script generated")
+ (property "ki_keywords" "connector")
+ (path "/789295bb-2cfb-4a2b-977f-b3831d5aa975")
+ (attr exclude_from_pos_files)
+ (fp_text reference "J4" (at 0 -2.398) (layer "F.SilkS")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 7c38d615-9988-4c82-b03f-c22d2c4faaf0)
+ )
+ (fp_text value "Conn_01x01_Pin" (at 0 2.55) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp 982c46a6-4963-4849-9f45-dd60361e1bb7)
+ )
+ (fp_text user "${REFERENCE}" (at 0 -2.4) (layer "F.Fab")
+ (effects (font (size 1 1) (thickness 0.15)))
+ (tstamp b62a6bfe-d4a4-4cfb-b505-0bff2a74f45d)
+ )
+ (fp_line (start -1.7 -1.7) (end 1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 340ecdde-a74b-4a5d-b6e9-948413aa9075))
+ (fp_line (start -1.7 1.7) (end -1.7 -1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp d9744bbe-e969-4a05-a17b-51e5ae5be107))
+ (fp_line (start 1.7 -1.7) (end 1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 83df3b99-7fd7-4f94-8241-6729b45c6c4f))
+ (fp_line (start 1.7 1.7) (end -1.7 1.7)
+ (stroke (width 0.12) (type solid)) (layer "F.SilkS") (tstamp 60f7966f-8044-4989-b50d-6ff4a6d7d90f))
+ (fp_line (start -2 -2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 6f775d53-a60b-462c-b50d-b3418814c287))
+ (fp_line (start -2 -2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp e0fbec47-99c8-4346-bd00-4390021376aa))
+ (fp_line (start 2 2) (end -2 2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp 3aa7310f-8620-42d1-8371-2d3bd420b960))
+ (fp_line (start 2 2) (end 2 -2)
+ (stroke (width 0.05) (type solid)) (layer "F.CrtYd") (tstamp e41e2973-3235-42e3-89ed-e54fdd819893))
+ (pad "1" smd rect (at 0 0) (size 3 3) (layers "F.Cu" "F.Mask")
+ (net 1 "GND") (pinfunction "Pin_1") (pintype "passive") (tstamp ce4b82b7-e796-433d-942f-d6658110a74f))
+ )
+
+ (gr_rect (start 188 138) (end 223 160)
+ (stroke (width 0.1) (type default)) (fill none) (layer "Edge.Cuts") (tstamp 7ef29bed-d4ce-40b7-b4ab-066b9f26f18c))
+ (gr_text "AWESOME LPF" (at 207 140) (layer "F.SilkS") (tstamp 4c71c61d-87af-4aac-a9e4-107a5f2585e7)
+ (effects (font (size 1.5 1.5) (thickness 0.3) bold) (justify left bottom))
+ )
+
+ (segment (start 206.025 150.4375) (end 206.025 145.9) (width 0.25) (layer "F.Cu") (net 2) (tstamp 6af5e53f-a89d-4628-bdf0-1d744e1ac0ee))
+ (segment (start 204.475 144.35) (end 203.0375 144.35) (width 0.25) (layer "F.Cu") (net 2) (tstamp 8f4ee24c-0318-410b-b82e-ffebe56eab0e))
+ (segment (start 206.025 145.9) (end 204.475 144.35) (width 0.25) (layer "F.Cu") (net 2) (tstamp a59120c0-0064-477d-8790-844e211e4a91))
+ (segment (start 205.4625 151) (end 206.025 150.4375) (width 0.25) (layer "F.Cu") (net 2) (tstamp ae3e4624-8be2-4214-a4e8-3f0b6dd2aeea))
+ (segment (start 198 141.4625) (end 198.4625 141) (width 0.25) (layer "F.Cu") (net 3) (tstamp 2a97922b-d1ef-448e-b2e9-fe742d0dbd96))
+ (segment (start 198 143.5375) (end 198 141.4625) (width 0.25) (layer "F.Cu") (net 3) (tstamp 3e60a55c-df66-4ab5-9967-5d1b2bc38360))
+ (segment (start 198 143.5375) (end 199.95 143.5375) (width 0.25) (layer "F.Cu") (net 3) (tstamp 8e49a5a8-3339-48d0-b165-09ca258d14af))
+ (segment (start 199.95 143.5375) (end 200.7625 144.35) (width 0.25) (layer "F.Cu") (net 3) (tstamp f1e23dfe-1d11-4acc-bb03-65c8f578b0c4))
+ (segment (start 200.7625 146.25) (end 200.7625 147.2375) (width 0.25) (layer "F.Cu") (net 4) (tstamp 85534454-d491-4953-955b-52f0e5c460e9))
+ (segment (start 200 153) (end 200.8 153.8) (width 0.25) (layer "F.Cu") (net 4) (tstamp a850b2ad-1789-4dc2-b330-b5672bb3bd35))
+ (segment (start 200.8 153.8) (end 200.8 156.6) (width 0.25) (layer "F.Cu") (net 4) (tstamp a8f3268f-8a45-47d6-850a-3928f701bf8e))
+ (segment (start 200.7625 147.2375) (end 200 148) (width 0.25) (layer "F.Cu") (net 4) (tstamp d495af85-40b2-4d2d-99f6-2cde0b1efce2))
+ (via (at 200 148) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 4) (tstamp 0add1e57-1646-4aa6-9492-37069351e01a))
+ (via (at 200 153) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 4) (tstamp 92333fa1-af3d-4367-8bc0-9cbb5841ebba))
+ (segment (start 200 148) (end 200 153) (width 0.25) (layer "B.Cu") (net 4) (tstamp 2bac8d8f-6e21-48b8-8492-c3b9aa36d7f5))
+ (segment (start 197 151) (end 202.5375 151) (width 0.25) (layer "F.Cu") (net 5) (tstamp 21dc81f3-9cc6-4114-8add-ed8bb34f5493))
+ (segment (start 193 147) (end 197 151) (width 0.25) (layer "F.Cu") (net 5) (tstamp 8e586fd3-f13b-4ddf-8f13-b84e8ff1545b))
+ (segment (start 203 149) (end 204 148) (width 0.25) (layer "F.Cu") (net 6) (tstamp 1b0a80e6-63aa-4abc-ba9c-1de4f7cd2bb9))
+ (segment (start 199 149) (end 203 149) (width 0.25) (layer "F.Cu") (net 6) (tstamp 9aa10e91-5da0-4924-8d1b-ad7b28a547da))
+ (segment (start 198 148) (end 199 149) (width 0.25) (layer "F.Cu") (net 6) (tstamp a688d845-f2b8-4372-a120-bf9cdec0c18d))
+ (segment (start 198 146.4625) (end 198 148) (width 0.25) (layer "F.Cu") (net 6) (tstamp b948dc12-cefb-4026-a263-1cd9d953fc0e))
+ (segment (start 216 146) (end 218 146) (width 0.25) (layer "F.Cu") (net 6) (tstamp b9d7539a-bbd4-4778-b406-893cf0d37ae9))
+ (segment (start 204 147.2125) (end 203.0375 146.25) (width 0.25) (layer "F.Cu") (net 6) (tstamp c8b2bd6b-0280-4c97-a7be-cc4ddc7ed8cc))
+ (segment (start 204 148) (end 205 148) (width 0.25) (layer "F.Cu") (net 6) (tstamp d0d48809-5eec-42fa-bb5b-45d363ec8ff3))
+ (segment (start 204 148) (end 204 147.2125) (width 0.25) (layer "F.Cu") (net 6) (tstamp f1e36132-b9bd-40bd-b533-12ab65321d7f))
+ (segment (start 215 147) (end 216 146) (width 0.25) (layer "F.Cu") (net 6) (tstamp fabf32ad-7bd3-430e-b52e-dceead5fe31a))
+ (via (at 205 148) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 6) (tstamp 336df05d-e6e1-4fa3-b44f-087a2683aead))
+ (via (at 215 147) (size 0.8) (drill 0.4) (layers "F.Cu" "B.Cu") (net 6) (tstamp 4771f646-3441-45f9-856f-0ddd80f3ea50))
+ (segment (start 205 148) (end 214 148) (width 0.25) (layer "B.Cu") (net 6) (tstamp 0ee0ef59-d060-442f-91b9-615bb9cbf2c4))
+ (segment (start 214 148) (end 215 147) (width 0.25) (layer "B.Cu") (net 6) (tstamp d984f40d-1d21-48ce-8d26-282cc14dd9ff))
+
+ (zone (net 1) (net_name "GND") (layers "F&B.Cu") (tstamp 9f1de67c-2f6b-46ef-9c44-e478f4e6b562) (hatch edge 0.5)
+ (connect_pads (clearance 0.5))
+ (min_thickness 0.25) (filled_areas_thickness no)
+ (fill yes (thermal_gap 0.5) (thermal_bridge_width 0.5))
+ (polygon
+ (pts
+ (xy 187 137)
+ (xy 187 161)
+ (xy 224 161)
+ (xy 224 137)
+ )
+ )
+ (filled_polygon
+ (layer "F.Cu")
+ (pts
+ (xy 222.942539 138.020185)
+ (xy 222.988294 138.072989)
+ (xy 222.9995 138.1245)
+ (xy 222.9995 159.8755)
+ (xy 222.979815 159.942539)
+ (xy 222.927011 159.988294)
+ (xy 222.8755 159.9995)
+ (xy 188.1245 159.9995)
+ (xy 188.057461 159.979815)
+ (xy 188.011706 159.927011)
+ (xy 188.0005 159.8755)
+ (xy 188.0005 158.144578)
+ (xy 198.7995 158.144578)
+ (xy 198.799501 158.147872)
+ (xy 198.805909 158.207483)
+ (xy 198.856204 158.342331)
+ (xy 198.942454 158.457546)
+ (xy 199.057669 158.543796)
+ (xy 199.192517 158.594091)
+ (xy 199.252127 158.6005)
+ (xy 202.347872 158.600499)
+ (xy 202.407483 158.594091)
+ (xy 202.542331 158.543796)
+ (xy 202.657546 158.457546)
+ (xy 202.743796 158.342331)
+ (xy 202.794091 158.207483)
+ (xy 202.8005 158.147873)
+ (xy 202.800499 156.85)
+ (xy 207 156.85)
+ (xy 207 158.144518)
+ (xy 207.000354 158.151132)
+ (xy 207.0064 158.207371)
+ (xy 207.056647 158.342089)
+ (xy 207.142811 158.457188)
+ (xy 207.25791 158.543352)
+ (xy 207.392628 158.593599)
+ (xy 207.448867 158.599645)
+ (xy 207.455482 158.6)
+ (xy 208.75 158.6)
+ (xy 208.75 156.85)
+ (xy 209.25 156.85)
+ (xy 209.25 158.6)
+ (xy 210.544518 158.6)
+ (xy 210.551132 158.599645)
+ (xy 210.607371 158.593599)
+ (xy 210.742089 158.543352)
+ (xy 210.857188 158.457188)
+ (xy 210.943352 158.342089)
+ (xy 210.993599 158.207371)
+ (xy 210.999645 158.151132)
+ (xy 211 158.144518)
+ (xy 211 156.85)
+ (xy 209.25 156.85)
+ (xy 208.75 156.85)
+ (xy 207 156.85)
+ (xy 202.800499 156.85)
+ (xy 202.800499 156.35)
+ (xy 207 156.35)
+ (xy 208.75 156.35)
+ (xy 208.75 154.6)
+ (xy 209.25 154.6)
+ (xy 209.25 156.35)
+ (xy 211 156.35)
+ (xy 211 155.055481)
+ (xy 210.999645 155.048867)
+ (xy 210.993599 154.992628)
+ (xy 210.943352 154.85791)
+ (xy 210.857188 154.742811)
+ (xy 210.742089 154.656647)
+ (xy 210.607371 154.6064)
+ (xy 210.551132 154.600354)
+ (xy 210.544518 154.6)
+ (xy 209.25 154.6)
+ (xy 208.75 154.6)
+ (xy 207.455482 154.6)
+ (xy 207.448867 154.600354)
+ (xy 207.392628 154.6064)
+ (xy 207.25791 154.656647)
+ (xy 207.142811 154.742811)
+ (xy 207.056647 154.85791)
+ (xy 207.0064 154.992628)
+ (xy 207.000354 155.048867)
+ (xy 207 155.055481)
+ (xy 207 156.35)
+ (xy 202.800499 156.35)
+ (xy 202.800499 155.052128)
+ (xy 202.794091 154.992517)
+ (xy 202.743796 154.857669)
+ (xy 202.657546 154.742454)
+ (xy 202.542331 154.656204)
+ (xy 202.407483 154.605909)
+ (xy 202.355816 154.600354)
+ (xy 202.351166 154.599854)
+ (xy 202.351165 154.599853)
+ (xy 202.347873 154.5995)
+ (xy 202.344551 154.5995)
+ (xy 201.5495 154.5995)
+ (xy 201.482461 154.579815)
+ (xy 201.436706 154.527011)
+ (xy 201.4255 154.4755)
+ (xy 201.4255 153.882743)
+ (xy 201.427764 153.862237)
+ (xy 201.42556 153.792126)
+ (xy 201.425499 153.788226)
+ (xy 201.425499 153.784151)
+ (xy 201.4255 153.76065)
+ (xy 201.424998 153.756677)
+ (xy 201.42408 153.745018)
+ (xy 201.422709 153.701373)
+ (xy 201.41712 153.68214)
+ (xy 201.413174 153.663082)
+ (xy 201.410664 153.643206)
+ (xy 201.394588 153.602604)
+ (xy 201.390804 153.591553)
+ (xy 201.384881 153.571168)
+ (xy 201.378618 153.54961)
+ (xy 201.368414 153.532355)
+ (xy 201.359861 153.514895)
+ (xy 201.352486 153.496269)
+ (xy 201.352486 153.496268)
+ (xy 201.326808 153.460925)
+ (xy 201.320401 153.451171)
+ (xy 201.298169 153.413579)
+ (xy 201.284006 153.399416)
+ (xy 201.271367 153.384617)
+ (xy 201.259595 153.368413)
+ (xy 201.225941 153.340573)
+ (xy 201.217299 153.332709)
+ (xy 200.93896 153.054369)
+ (xy 200.905475 152.993046)
+ (xy 200.903323 152.979668)
+ (xy 200.885674 152.811744)
+ (xy 200.827179 152.631716)
+ (xy 200.827179 152.631715)
+ (xy 200.732533 152.467783)
+ (xy 200.60587 152.32711)
+ (xy 200.45273 152.215848)
+ (xy 200.279802 152.138855)
+ (xy 200.094648 152.0995)
+ (xy 200.094646 152.0995)
+ (xy 199.905354 152.0995)
+ (xy 199.905352 152.0995)
+ (xy 199.720197 152.138855)
+ (xy 199.547269 152.215848)
+ (xy 199.394129 152.32711)
+ (xy 199.267466 152.467783)
+ (xy 199.17282 152.631715)
+ (xy 199.114326 152.811742)
+ (xy 199.09454 153)
+ (xy 199.114326 153.188257)
+ (xy 199.17282 153.368284)
+ (xy 199.267466 153.532216)
+ (xy 199.394129 153.672889)
+ (xy 199.547269 153.784151)
+ (xy 199.720197 153.861144)
+ (xy 199.905352 153.9005)
+ (xy 199.905354 153.9005)
+ (xy 199.964546 153.9005)
+ (xy 200.031585 153.920185)
+ (xy 200.052227 153.936818)
+ (xy 200.138181 154.022771)
+ (xy 200.171666 154.084094)
+ (xy 200.1745 154.110453)
+ (xy 200.174499 154.4755)
+ (xy 200.154814 154.54254)
+ (xy 200.10201 154.588295)
+ (xy 200.050499 154.5995)
+ (xy 199.255439 154.5995)
+ (xy 199.25542 154.5995)
+ (xy 199.252128 154.599501)
+ (xy 199.248848 154.599853)
+ (xy 199.24884 154.599854)
+ (xy 199.192515 154.605909)
+ (xy 199.057669 154.656204)
+ (xy 198.942454 154.742454)
+ (xy 198.856204 154.857668)
+ (xy 198.80591 154.992515)
+ (xy 198.805909 154.992517)
+ (xy 198.7995 155.052127)
+ (xy 198.7995 155.055448)
+ (xy 198.7995 155.055449)
+ (xy 198.7995 158.14456)
+ (xy 198.7995 158.144578)
+ (xy 188.0005 158.144578)
+ (xy 188.0005 148.544578)
+ (xy 190.9995 148.544578)
+ (xy 190.999501 148.547872)
+ (xy 191.005909 148.607483)
+ (xy 191.056204 148.742331)
+ (xy 191.142454 148.857546)
+ (xy 191.257669 148.943796)
+ (xy 191.392517 148.994091)
+ (xy 191.452127 149.0005)
+ (xy 194.064546 149.000499)
+ (xy 194.131585 149.020184)
+ (xy 194.152227 149.036818)
+ (xy 196.499196 151.383787)
+ (xy 196.512096 151.399888)
+ (xy 196.563223 151.4479)
+ (xy 196.56602 151.450611)
+ (xy 196.585529 151.47012)
+ (xy 196.588709 151.472587)
+ (xy 196.597571 151.480155)
+ (xy 196.629418 151.510062)
+ (xy 196.64697 151.519711)
+ (xy 196.663238 151.530397)
+ (xy 196.679064 151.542673)
+ (xy 196.719146 151.560017)
+ (xy 196.729633 151.565155)
+ (xy 196.767907 151.586197)
+ (xy 196.77641 151.588379)
+ (xy 196.787308 151.591178)
+ (xy 196.805713 151.597478)
+ (xy 196.824104 151.605437)
+ (xy 196.86725 151.61227)
+ (xy 196.878668 151.614635)
+ (xy 196.920981 151.6255)
+ (xy 196.941016 151.6255)
+ (xy 196.960415 151.627027)
+ (xy 196.980196 151.63016)
+ (xy 197.023674 151.62605)
+ (xy 197.035344 151.6255)
+ (xy 201.357465 151.6255)
+ (xy 201.424504 151.645185)
+ (xy 201.470259 151.697989)
+ (xy 201.480823 151.736899)
+ (xy 201.485 151.777796)
+ (xy 201.540186 151.944334)
+ (xy 201.632288 152.093657)
+ (xy 201.756342 152.217711)
+ (xy 201.756344 152.217712)
+ (xy 201.905666 152.309814)
+ (xy 202.017016 152.346712)
+ (xy 202.072202 152.364999)
+ (xy 202.171858 152.37518)
+ (xy 202.171859 152.37518)
+ (xy 202.174991 152.3755)
+ (xy 202.900008 152.375499)
+ (xy 203.002797 152.364999)
+ (xy 203.169334 152.309814)
+ (xy 203.318656 152.217712)
+ (xy 203.442712 152.093656)
+ (xy 203.534814 151.944334)
+ (xy 203.589999 151.777797)
+ (xy 203.6005 151.675009)
+ (xy 203.600499 150.324992)
+ (xy 203.589999 150.222203)
+ (xy 203.534814 150.055666)
+ (xy 203.442712 149.906344)
+ (xy 203.442711 149.906342)
+ (xy 203.318658 149.782289)
+ (xy 203.31229 149.778361)
+ (xy 203.296359 149.768535)
+ (xy 203.249636 149.71659)
+ (xy 203.238412 149.647627)
+ (xy 203.266254 149.583545)
+ (xy 203.29292 149.564261)
+ (xy 203.291057 149.561696)
+ (xy 203.339061 149.526817)
+ (xy 203.34883 149.5204)
+ (xy 203.386418 149.498171)
+ (xy 203.386417 149.498171)
+ (xy 203.38642 149.49817)
+ (xy 203.400585 149.484004)
+ (xy 203.415373 149.471373)
+ (xy 203.431587 149.459594)
+ (xy 203.459438 149.425926)
+ (xy 203.467279 149.417309)
+ (xy 204.215301 148.669288)
+ (xy 204.276622 148.635805)
+ (xy 204.346314 148.640789)
+ (xy 204.383139 148.665841)
+ (xy 204.383586 148.665227)
+ (xy 204.394126 148.672884)
+ (xy 204.394129 148.672888)
+ (xy 204.54727 148.784151)
+ (xy 204.547271 148.784151)
+ (xy 204.547272 148.784152)
+ (xy 204.720197 148.861144)
+ (xy 204.905352 148.9005)
+ (xy 204.905354 148.9005)
+ (xy 205.094648 148.9005)
+ (xy 205.249719 148.867539)
+ (xy 205.319386 148.872855)
+ (xy 205.37512 148.914992)
+ (xy 205.399225 148.980572)
+ (xy 205.3995 148.988829)
+ (xy 205.3995 149.5005)
+ (xy 205.379815 149.567539)
+ (xy 205.327011 149.613294)
+ (xy 205.275501 149.6245)
+ (xy 205.103141 149.6245)
+ (xy 205.103121 149.6245)
+ (xy 205.099992 149.624501)
+ (xy 205.09686 149.62482)
+ (xy 205.096858 149.624821)
+ (xy 204.997203 149.635)
+ (xy 204.830665 149.690186)
+ (xy 204.681342 149.782288)
+ (xy 204.557288 149.906342)
+ (xy 204.465186 150.055665)
+ (xy 204.41 150.222202)
+ (xy 204.399819 150.321858)
+ (xy 204.399817 150.321878)
+ (xy 204.3995 150.324991)
+ (xy 204.3995 150.328138)
+ (xy 204.3995 150.328139)
+ (xy 204.3995 151.671859)
+ (xy 204.3995 151.671878)
+ (xy 204.399501 151.675008)
+ (xy 204.39982 151.67814)
+ (xy 204.399821 151.678141)
+ (xy 204.41 151.777796)
+ (xy 204.465186 151.944334)
+ (xy 204.557288 152.093657)
+ (xy 204.681342 152.217711)
+ (xy 204.681344 152.217712)
+ (xy 204.830666 152.309814)
+ (xy 204.942016 152.346712)
+ (xy 204.997202 152.364999)
+ (xy 205.096858 152.37518)
+ (xy 205.096859 152.37518)
+ (xy 205.099991 152.3755)
+ (xy 205.825008 152.375499)
+ (xy 205.927797 152.364999)
+ (xy 206.094334 152.309814)
+ (xy 206.243656 152.217712)
+ (xy 206.367712 152.093656)
+ (xy 206.459814 151.944334)
+ (xy 206.514999 151.777797)
+ (xy 206.5255 151.675009)
+ (xy 206.525499 150.857313)
+ (xy 206.540834 150.797582)
+ (xy 206.544711 150.790529)
+ (xy 206.555399 150.774258)
+ (xy 206.567673 150.758436)
+ (xy 206.585018 150.718352)
+ (xy 206.59016 150.707856)
+ (xy 206.611197 150.669592)
+ (xy 206.616179 150.650184)
+ (xy 206.622481 150.63178)
+ (xy 206.630437 150.613396)
+ (xy 206.637269 150.570252)
+ (xy 206.639633 150.558838)
+ (xy 206.6505 150.516519)
+ (xy 206.6505 150.496482)
+ (xy 206.652027 150.477084)
+ (xy 206.65516 150.457304)
+ (xy 206.65105 150.413824)
+ (xy 206.6505 150.402155)
+ (xy 206.6505 147.315638)
+ (xy 206.670185 147.248599)
+ (xy 206.709404 147.210099)
+ (xy 206.785154 147.163376)
+ (xy 206.818656 147.142712)
+ (xy 206.942712 147.018656)
+ (xy 207.034814 146.869334)
+ (xy 207.089999 146.702797)
+ (xy 207.1005 146.600009)
+ (xy 207.1005 146.15)
+ (xy 207.900001 146.15)
+ (xy 207.900001 146.596829)
+ (xy 207.900321 146.603111)
+ (xy 207.910493 146.702695)
+ (xy 207.965642 146.869122)
+ (xy 208.057683 147.018345)
+ (xy 208.181654 147.142316)
+ (xy 208.330877 147.234357)
+ (xy 208.497303 147.289506)
+ (xy 208.59689 147.29968)
+ (xy 208.603168 147.299999)
+ (xy 208.724999 147.299999)
+ (xy 208.725 147.299998)
+ (xy 208.725 146.15)
+ (xy 209.225 146.15)
+ (xy 209.225 147.299999)
+ (xy 209.346829 147.299999)
+ (xy 209.353111 147.299678)
+ (xy 209.452695 147.289506)
+ (xy 209.619122 147.234357)
+ (xy 209.768345 147.142316)
+ (xy 209.892316 147.018345)
+ (xy 209.903631 147)
+ (xy 214.09454 147)
+ (xy 214.099543 147.047597)
+ (xy 214.114326 147.188257)
+ (xy 214.17282 147.368284)
+ (xy 214.267466 147.532216)
+ (xy 214.394129 147.672889)
+ (xy 214.547269 147.784151)
+ (xy 214.720197 147.861144)
+ (xy 214.905352 147.9005)
+ (xy 214.905354 147.9005)
+ (xy 215.094648 147.9005)
+ (xy 215.218083 147.874262)
+ (xy 215.279803 147.861144)
+ (xy 215.45273 147.784151)
+ (xy 215.582942 147.689547)
+ (xy 215.60587 147.672889)
+ (xy 215.642943 147.631716)
+ (xy 215.732533 147.532216)
+ (xy 215.768113 147.470588)
+ (xy 215.818678 147.422373)
+ (xy 215.887285 147.409149)
+ (xy 215.95215 147.435116)
+ (xy 215.992679 147.49203)
+ (xy 215.9995 147.53258)
+ (xy 215.9995 147.544556)
+ (xy 215.9995 147.544574)
+ (xy 215.999501 147.547872)
+ (xy 215.999853 147.551152)
+ (xy 215.999854 147.551159)
+ (xy 216.005909 147.607484)
+ (xy 216.030303 147.672888)
+ (xy 216.056204 147.742331)
+ (xy 216.142454 147.857546)
+ (xy 216.257669 147.943796)
+ (xy 216.392517 147.994091)
+ (xy 216.452127 148.0005)
+ (xy 219.547872 148.000499)
+ (xy 219.607483 147.994091)
+ (xy 219.742331 147.943796)
+ (xy 219.857546 147.857546)
+ (xy 219.943796 147.742331)
+ (xy 219.994091 147.607483)
+ (xy 220.0005 147.547873)
+ (xy 220.000499 144.452128)
+ (xy 219.994091 144.392517)
+ (xy 219.943796 144.257669)
+ (xy 219.857546 144.142454)
+ (xy 219.742331 144.056204)
+ (xy 219.607483 144.005909)
+ (xy 219.607483 144.005908)
+ (xy 219.551166 143.999854)
+ (xy 219.551165 143.999853)
+ (xy 219.547873 143.9995)
+ (xy 219.54455 143.9995)
+ (xy 216.455439 143.9995)
+ (xy 216.45542 143.9995)
+ (xy 216.452128 143.999501)
+ (xy 216.448848 143.999853)
+ (xy 216.44884 143.999854)
+ (xy 216.392515 144.005909)
+ (xy 216.257669 144.056204)
+ (xy 216.142454 144.142454)
+ (xy 216.056204 144.257668)
+ (xy 216.00591 144.392515)
+ (xy 216.005909 144.392517)
+ (xy 215.9995 144.452127)
+ (xy 215.9995 144.455448)
+ (xy 215.9995 144.455449)
+ (xy 215.9995 145.255679)
+ (xy 215.979815 145.322718)
+ (xy 215.927011 145.368473)
+ (xy 215.910092 145.374756)
+ (xy 215.88213 145.382879)
+ (xy 215.863084 145.386824)
+ (xy 215.843208 145.389335)
+ (xy 215.8026 145.405413)
+ (xy 215.791554 145.409194)
+ (xy 215.788781 145.410001)
+ (xy 215.749607 145.421383)
+ (xy 215.732365 145.431579)
+ (xy 215.714904 145.440133)
+ (xy 215.696267 145.447512)
+ (xy 215.660931 145.473185)
+ (xy 215.651174 145.479595)
+ (xy 215.61358 145.501829)
+ (xy 215.599413 145.515996)
+ (xy 215.584624 145.528626)
+ (xy 215.568413 145.540404)
+ (xy 215.540572 145.574058)
+ (xy 215.532711 145.582697)
+ (xy 215.052228 146.063181)
+ (xy 214.990905 146.096666)
+ (xy 214.964547 146.0995)
+ (xy 214.905352 146.0995)
+ (xy 214.720197 146.138855)
+ (xy 214.547269 146.215848)
+ (xy 214.394129 146.32711)
+ (xy 214.267466 146.467783)
+ (xy 214.17282 146.631715)
+ (xy 214.114326 146.811742)
+ (xy 214.103957 146.910404)
+ (xy 214.09454 147)
+ (xy 209.903631 147)
+ (xy 209.984357 146.869122)
+ (xy 210.039506 146.702696)
+ (xy 210.04968 146.603109)
+ (xy 210.05 146.596831)
+ (xy 210.05 146.15)
+ (xy 209.225 146.15)
+ (xy 208.725 146.15)
+ (xy 207.900001 146.15)
+ (xy 207.1005 146.15)
+ (xy 207.100499 145.65)
+ (xy 207.9 145.65)
+ (xy 208.725 145.65)
+ (xy 208.725 144.5)
+ (xy 209.225 144.5)
+ (xy 209.225 145.65)
+ (xy 210.049999 145.65)
+ (xy 210.049999 145.20317)
+ (xy 210.049678 145.196888)
+ (xy 210.039506 145.097304)
+ (xy 209.984357 144.930877)
+ (xy 209.892316 144.781654)
+ (xy 209.768345 144.657683)
+ (xy 209.619122 144.565642)
+ (xy 209.452696 144.510493)
+ (xy 209.353109 144.500319)
+ (xy 209.346832 144.5)
+ (xy 209.225 144.5)
+ (xy 208.725 144.5)
+ (xy 208.603171 144.5)
+ (xy 208.596888 144.500321)
+ (xy 208.497304 144.510493)
+ (xy 208.330877 144.565642)
+ (xy 208.181654 144.657683)
+ (xy 208.057683 144.781654)
+ (xy 207.965642 144.930877)
+ (xy 207.910493 145.097303)
+ (xy 207.900319 145.19689)
+ (xy 207.9 145.203168)
+ (xy 207.9 145.65)
+ (xy 207.100499 145.65)
+ (xy 207.100499 145.199992)
+ (xy 207.089999 145.097203)
+ (xy 207.034814 144.930666)
+ (xy 206.942712 144.781344)
+ (xy 206.942711 144.781342)
+ (xy 206.818657 144.657288)
+ (xy 206.669334 144.565186)
+ (xy 206.502797 144.51)
+ (xy 206.403141 144.499819)
+ (xy 206.403122 144.499818)
+ (xy 206.400009 144.4995)
+ (xy 206.39686 144.4995)
+ (xy 205.653141 144.4995)
+ (xy 205.653121 144.4995)
+ (xy 205.649992 144.499501)
+ (xy 205.646862 144.49982)
+ (xy 205.646856 144.499821)
+ (xy 205.580766 144.506572)
+ (xy 205.512074 144.493802)
+ (xy 205.480485 144.470895)
+ (xy 205.245079 144.235489)
+ (xy 204.975802 143.966211)
+ (xy 204.962906 143.950113)
+ (xy 204.911775 143.902098)
+ (xy 204.908978 143.899387)
+ (xy 204.892227 143.882636)
+ (xy 204.889471 143.87988)
+ (xy 204.88629 143.877412)
+ (xy 204.877422 143.869837)
+ (xy 204.845582 143.839938)
+ (xy 204.828024 143.830285)
+ (xy 204.811764 143.819604)
+ (xy 204.795936 143.807327)
+ (xy 204.755851 143.78998)
+ (xy 204.745361 143.784841)
+ (xy 204.707091 143.763802)
+ (xy 204.687691 143.758821)
+ (xy 204.669284 143.752519)
+ (xy 204.650897 143.744562)
+ (xy 204.607758 143.737729)
+ (xy 204.596324 143.735361)
+ (xy 204.554019 143.7245)
+ (xy 204.533984 143.7245)
+ (xy 204.514586 143.722973)
+ (xy 204.507162 143.721797)
+ (xy 204.494805 143.71984)
+ (xy 204.494804 143.71984)
+ (xy 204.461751 143.722964)
+ (xy 204.451325 143.72395)
+ (xy 204.439656 143.7245)
+ (xy 204.045808 143.7245)
+ (xy 203.978769 143.704815)
+ (xy 203.958127 143.688181)
+ (xy 203.951865 143.681919)
+ (xy 203.810397 143.598255)
+ (xy 203.652572 143.552402)
+ (xy 203.618128 143.549691)
+ (xy 203.618114 143.54969)
+ (xy 203.615694 143.5495)
+ (xy 202.459306 143.5495)
+ (xy 202.456886 143.54969)
+ (xy 202.456871 143.549691)
+ (xy 202.422427 143.552402)
+ (xy 202.264602 143.598255)
+ (xy 202.123134 143.681919)
+ (xy 202.006919 143.798134)
+ (xy 202.006731 143.798453)
+ (xy 202.004771 143.800282)
+ (xy 201.995842 143.809212)
+ (xy 201.995535 143.808905)
+ (xy 201.955661 143.846135)
+ (xy 201.886919 143.858638)
+ (xy 201.82233 143.831991)
+ (xy 201.793269 143.798453)
+ (xy 201.79308 143.798134)
+ (xy 201.676865 143.681919)
+ (xy 201.535397 143.598255)
+ (xy 201.377572 143.552402)
+ (xy 201.343128 143.549691)
+ (xy 201.343114 143.54969)
+ (xy 201.340694 143.5495)
+ (xy 201.338249 143.5495)
+ (xy 200.897953 143.5495)
+ (xy 200.830914 143.529815)
+ (xy 200.810272 143.513181)
+ (xy 200.450802 143.153711)
+ (xy 200.437906 143.137613)
+ (xy 200.386775 143.089598)
+ (xy 200.383978 143.086887)
+ (xy 200.367227 143.070136)
+ (xy 200.364471 143.06738)
+ (xy 200.36129 143.064912)
+ (xy 200.352422 143.057337)
+ (xy 200.320582 143.027438)
+ (xy 200.303024 143.017785)
+ (xy 200.286764 143.007104)
+ (xy 200.270936 142.994827)
+ (xy 200.230851 142.97748)
+ (xy 200.220361 142.972341)
+ (xy 200.182091 142.951302)
+ (xy 200.162691 142.946321)
+ (xy 200.144284 142.940019)
+ (xy 200.125897 142.932062)
+ (xy 200.082758 142.925229)
+ (xy 200.071324 142.922861)
+ (xy 200.029019 142.912)
+ (xy 200.008984 142.912)
+ (xy 199.989586 142.910473)
+ (xy 199.982162 142.909297)
+ (xy 199.969805 142.90734)
+ (xy 199.969804 142.90734)
+ (xy 199.936751 142.910464)
+ (xy 199.926325 142.91145)
+ (xy 199.914656 142.912)
+ (xy 199.382928 142.912)
+ (xy 199.315889 142.892315)
+ (xy 199.277389 142.853096)
+ (xy 199.217711 142.756342)
+ (xy 199.093657 142.632288)
+ (xy 198.98012 142.562259)
+ (xy 198.933395 142.510312)
+ (xy 198.922172 142.441349)
+ (xy 198.950015 142.377267)
+ (xy 199.006209 142.339015)
+ (xy 199.094334 142.309814)
+ (xy 199.243656 142.217712)
+ (xy 199.367712 142.093656)
+ (xy 199.459814 141.944334)
+ (xy 199.514999 141.777797)
+ (xy 199.5255 141.675009)
+ (xy 199.525499 140.324992)
+ (xy 199.514999 140.222203)
+ (xy 199.459814 140.055666)
+ (xy 199.367712 139.906344)
+ (xy 199.367711 139.906342)
+ (xy 199.243657 139.782288)
+ (xy 199.094334 139.690186)
+ (xy 198.927797 139.635)
+ (xy 198.828141 139.624819)
+ (xy 198.828122 139.624818)
+ (xy 198.825009 139.6245)
+ (xy 198.82186 139.6245)
+ (xy 198.103141 139.6245)
+ (xy 198.103121 139.6245)
+ (xy 198.099992 139.624501)
+ (xy 198.09686 139.62482)
+ (xy 198.096858 139.624821)
+ (xy 197.997203 139.635)
+ (xy 197.830665 139.690186)
+ (xy 197.681342 139.782288)
+ (xy 197.557288 139.906342)
+ (xy 197.465186 140.055665)
+ (xy 197.41 140.222202)
+ (xy 197.399819 140.321858)
+ (xy 197.399817 140.321878)
+ (xy 197.3995 140.324991)
+ (xy 197.3995 140.328138)
+ (xy 197.3995 140.328139)
+ (xy 197.3995 141.249515)
+ (xy 197.395087 141.270834)
+ (xy 197.397012 141.271139)
+ (xy 197.387728 141.329743)
+ (xy 197.38536 141.341174)
+ (xy 197.3745 141.383477)
+ (xy 197.3745 141.403516)
+ (xy 197.372973 141.422914)
+ (xy 197.36984 141.442694)
+ (xy 197.37395 141.486173)
+ (xy 197.3745 141.497843)
+ (xy 197.3745 142.357465)
+ (xy 197.354815 142.424504)
+ (xy 197.302011 142.470259)
+ (xy 197.263101 142.480823)
+ (xy 197.222203 142.485)
+ (xy 197.055665 142.540186)
+ (xy 196.906342 142.632288)
+ (xy 196.782288 142.756342)
+ (xy 196.690186 142.905665)
+ (xy 196.635 143.072202)
+ (xy 196.624819 143.171858)
+ (xy 196.624817 143.171878)
+ (xy 196.6245 143.174991)
+ (xy 196.6245 143.178138)
+ (xy 196.6245 143.178139)
+ (xy 196.6245 143.896858)
+ (xy 196.6245 143.896877)
+ (xy 196.624501 143.900008)
+ (xy 196.62482 143.90314)
+ (xy 196.624821 143.903141)
+ (xy 196.635 144.002796)
+ (xy 196.690186 144.169334)
+ (xy 196.782288 144.318657)
+ (xy 196.906342 144.442711)
+ (xy 196.916279 144.44884)
+ (xy 197.055666 144.534814)
+ (xy 197.148699 144.565642)
+ (xy 197.222202 144.589999)
+ (xy 197.321858 144.60018)
+ (xy 197.321859 144.60018)
+ (xy 197.324991 144.6005)
+ (xy 198.675008 144.600499)
+ (xy 198.777797 144.589999)
+ (xy 198.944334 144.534814)
+ (xy 199.093656 144.442712)
+ (xy 199.217712 144.318656)
+ (xy 199.277388 144.221904)
+ (xy 199.329337 144.175179)
+ (xy 199.382928 144.163)
+ (xy 199.4755 144.163)
+ (xy 199.542539 144.182685)
+ (xy 199.588294 144.235489)
+ (xy 199.5995 144.287)
+ (xy 199.5995 144.565694)
+ (xy 199.59969 144.568114)
+ (xy 199.599691 144.568128)
+ (xy 199.602402 144.602572)
+ (xy 199.648255 144.760397)
+ (xy 199.731919 144.901865)
+ (xy 199.848135 145.018081)
+ (xy 199.912598 145.056204)
+ (xy 199.989602 145.101744)
+ (xy 200.147427 145.147597)
+ (xy 200.147431 145.147598)
+ (xy 200.184306 145.1505)
+ (xy 200.186751 145.1505)
+ (xy 201.338249 145.1505)
+ (xy 201.340694 145.1505)
+ (xy 201.377569 145.147598)
+ (xy 201.535398 145.101744)
+ (xy 201.676865 145.018081)
+ (xy 201.676865 145.01808)
+ (xy 201.690348 145.010107)
+ (xy 201.69106 145.011311)
+ (xy 201.736019 144.986758)
+ (xy 201.805711 144.991739)
+ (xy 201.853439 145.023751)
+ (xy 201.877704 145.05)
+ (xy 202.143185 145.05)
+ (xy 202.206306 145.067268)
+ (xy 202.264602 145.101744)
+ (xy 202.422427 145.147597)
+ (xy 202.422431 145.147598)
+ (xy 202.459306 145.1505)
+ (xy 202.461751 145.1505)
+ (xy 203.613249 145.1505)
+ (xy 203.615694 145.1505)
+ (xy 203.652569 145.147598)
+ (xy 203.810398 145.101744)
+ (xy 203.868693 145.067268)
+ (xy 203.931815 145.05)
+ (xy 204.239048 145.05)
+ (xy 204.306087 145.069685)
+ (xy 204.326729 145.086319)
+ (xy 204.913181 145.672771)
+ (xy 204.946666 145.734094)
+ (xy 204.9495 145.760452)
+ (xy 204.9495 146.596858)
+ (xy 204.9495 146.596877)
+ (xy 204.949501 146.600008)
+ (xy 204.94982 146.60314)
+ (xy 204.949821 146.603141)
+ (xy 204.96 146.702796)
+ (xy 205.015186 146.869334)
+ (xy 205.040518 146.910404)
+ (xy 205.058958 146.977796)
+ (xy 205.038035 147.04446)
+ (xy 204.984393 147.089229)
+ (xy 204.934979 147.0995)
+ (xy 204.905351 147.0995)
+ (xy 204.752028 147.132089)
+ (xy 204.682361 147.126773)
+ (xy 204.626628 147.084636)
+ (xy 204.610956 147.056447)
+ (xy 204.610664 147.05571)
+ (xy 204.610664 147.055708)
+ (xy 204.594581 147.015089)
+ (xy 204.590808 147.004068)
+ (xy 204.578618 146.96211)
+ (xy 204.568414 146.944855)
+ (xy 204.559861 146.927395)
+ (xy 204.555444 146.916239)
+ (xy 204.552486 146.908768)
+ (xy 204.526808 146.873425)
+ (xy 204.520401 146.863671)
+ (xy 204.49817 146.82608)
+ (xy 204.484006 146.811916)
+ (xy 204.471367 146.797117)
+ (xy 204.459595 146.780913)
+ (xy 204.425941 146.753073)
+ (xy 204.417299 146.745209)
+ (xy 204.236346 146.564256)
+ (xy 204.202861 146.502933)
+ (xy 204.200424 146.466989)
+ (xy 204.200213 146.470558)
+ (xy 204.200308 146.468129)
+ (xy 204.2005 146.465694)
+ (xy 204.2005 146.034306)
+ (xy 204.197598 145.997431)
+ (xy 204.197531 145.997202)
+ (xy 204.151744 145.839602)
+ (xy 204.150578 145.83763)
+ (xy 204.133395 145.769906)
+ (xy 204.150579 145.711386)
+ (xy 204.151281 145.710198)
+ (xy 204.197099 145.552488)
+ (xy 204.197295 145.55)
+ (xy 203.931815 145.55)
+ (xy 203.868694 145.532732)
+ (xy 203.810397 145.498255)
+ (xy 203.652572 145.452402)
+ (xy 203.618128 145.449691)
+ (xy 203.618114 145.44969)
+ (xy 203.615694 145.4495)
+ (xy 202.459306 145.4495)
+ (xy 202.456886 145.44969)
+ (xy 202.456871 145.449691)
+ (xy 202.422427 145.452402)
+ (xy 202.264602 145.498255)
+ (xy 202.206306 145.532732)
+ (xy 202.143185 145.55)
+ (xy 201.877704 145.55)
+ (xy 201.853439 145.576249)
+ (xy 201.793477 145.612114)
+ (xy 201.723643 145.609869)
+ (xy 201.690569 145.589519)
+ (xy 201.690348 145.589893)
+ (xy 201.671188 145.578562)
+ (xy 201.565395 145.515996)
+ (xy 201.535397 145.498255)
+ (xy 201.377572 145.452402)
+ (xy 201.343128 145.449691)
+ (xy 201.343114 145.44969)
+ (xy 201.340694 145.4495)
+ (xy 200.184306 145.4495)
+ (xy 200.181886 145.44969)
+ (xy 200.181871 145.449691)
+ (xy 200.147427 145.452402)
+ (xy 199.989602 145.498255)
+ (xy 199.848134 145.581919)
+ (xy 199.731919 145.698134)
+ (xy 199.648255 145.839602)
+ (xy 199.602829 145.995958)
+ (xy 199.565222 146.054843)
+ (xy 199.50175 146.084049)
+ (xy 199.432563 146.074303)
+ (xy 199.379629 146.028698)
+ (xy 199.366047 146.000366)
+ (xy 199.364586 145.995958)
+ (xy 199.309814 145.830666)
+ (xy 199.217712 145.681344)
+ (xy 199.217711 145.681342)
+ (xy 199.093657 145.557288)
+ (xy 198.944334 145.465186)
+ (xy 198.777797 145.41)
+ (xy 198.678141 145.399819)
+ (xy 198.678122 145.399818)
+ (xy 198.675009 145.3995)
+ (xy 198.67186 145.3995)
+ (xy 197.32814 145.3995)
+ (xy 197.32812 145.3995)
+ (xy 197.324992 145.399501)
+ (xy 197.32186 145.39982)
+ (xy 197.321858 145.399821)
+ (xy 197.222203 145.41)
+ (xy 197.055665 145.465186)
+ (xy 196.906342 145.557288)
+ (xy 196.782288 145.681342)
+ (xy 196.690186 145.830665)
+ (xy 196.635 145.997202)
+ (xy 196.624819 146.096858)
+ (xy 196.624817 146.096878)
+ (xy 196.6245 146.099991)
+ (xy 196.6245 146.103138)
+ (xy 196.6245 146.103139)
+ (xy 196.6245 146.821858)
+ (xy 196.6245 146.821877)
+ (xy 196.624501 146.825008)
+ (xy 196.62482 146.82814)
+ (xy 196.624821 146.828141)
+ (xy 196.635 146.927796)
+ (xy 196.690186 147.094334)
+ (xy 196.782288 147.243657)
+ (xy 196.906342 147.367711)
+ (xy 196.906344 147.367712)
+ (xy 197.055666 147.459814)
+ (xy 197.166657 147.496593)
+ (xy 197.222202 147.514999)
+ (xy 197.235566 147.516364)
+ (xy 197.263101 147.519177)
+ (xy 197.327793 147.545572)
+ (xy 197.367945 147.602753)
+ (xy 197.3745 147.642535)
+ (xy 197.3745 147.917256)
+ (xy 197.372235 147.937766)
+ (xy 197.374439 148.007872)
+ (xy 197.3745 148.011767)
+ (xy 197.3745 148.03935)
+ (xy 197.374988 148.043219)
+ (xy 197.374989 148.043225)
+ (xy 197.375004 148.043343)
+ (xy 197.375918 148.054967)
+ (xy 197.37729 148.098626)
+ (xy 197.382879 148.11786)
+ (xy 197.386825 148.136916)
+ (xy 197.389335 148.156792)
+ (xy 197.405414 148.197404)
+ (xy 197.409197 148.208451)
+ (xy 197.421382 148.250391)
+ (xy 197.43158 148.267635)
+ (xy 197.440136 148.2851)
+ (xy 197.447514 148.303732)
+ (xy 197.447515 148.303733)
+ (xy 197.47318 148.339059)
+ (xy 197.479593 148.348822)
+ (xy 197.501826 148.386416)
+ (xy 197.501829 148.386419)
+ (xy 197.50183 148.38642)
+ (xy 197.515995 148.400585)
+ (xy 197.528627 148.415375)
+ (xy 197.540406 148.431587)
+ (xy 197.574058 148.459426)
+ (xy 197.582699 148.467289)
+ (xy 198.499197 149.383787)
+ (xy 198.512098 149.399889)
+ (xy 198.514212 149.401874)
+ (xy 198.514214 149.401877)
+ (xy 198.561561 149.446339)
+ (xy 198.56324 149.447916)
+ (xy 198.566036 149.450626)
+ (xy 198.58553 149.47012)
+ (xy 198.588615 149.472513)
+ (xy 198.588701 149.47258)
+ (xy 198.597573 149.480158)
+ (xy 198.629418 149.510062)
+ (xy 198.646974 149.519714)
+ (xy 198.663231 149.530392)
+ (xy 198.679064 149.542674)
+ (xy 198.695185 149.549649)
+ (xy 198.719156 149.560023)
+ (xy 198.729643 149.56516)
+ (xy 198.767908 149.586197)
+ (xy 198.787316 149.59118)
+ (xy 198.80571 149.597478)
+ (xy 198.824105 149.605438)
+ (xy 198.867254 149.612271)
+ (xy 198.87868 149.614638)
+ (xy 198.894222 149.618629)
+ (xy 198.92098 149.6255)
+ (xy 198.920981 149.6255)
+ (xy 198.941016 149.6255)
+ (xy 198.960413 149.627026)
+ (xy 198.980196 149.63016)
+ (xy 199.023674 149.62605)
+ (xy 199.035344 149.6255)
+ (xy 201.613769 149.6255)
+ (xy 201.680808 149.645185)
+ (xy 201.726563 149.697989)
+ (xy 201.736507 149.767147)
+ (xy 201.707482 149.830703)
+ (xy 201.70145 149.837181)
+ (xy 201.632288 149.906342)
+ (xy 201.540186 150.055665)
+ (xy 201.485 150.222202)
+ (xy 201.480823 150.263101)
+ (xy 201.454428 150.327793)
+ (xy 201.397247 150.367945)
+ (xy 201.357465 150.3745)
+ (xy 197.310453 150.3745)
+ (xy 197.243414 150.354815)
+ (xy 197.222772 150.338181)
+ (xy 195.036818 148.152227)
+ (xy 195.003333 148.090904)
+ (xy 195.000499 148.064546)
+ (xy 195.000499 145.455439)
+ (xy 195.000499 145.455438)
+ (xy 195.000499 145.452128)
+ (xy 194.994091 145.392517)
+ (xy 194.943796 145.257669)
+ (xy 194.857546 145.142454)
+ (xy 194.742331 145.056204)
+ (xy 194.607483 145.005909)
+ (xy 194.547873 144.9995)
+ (xy 194.54455 144.9995)
+ (xy 191.455439 144.9995)
+ (xy 191.45542 144.9995)
+ (xy 191.452128 144.999501)
+ (xy 191.448848 144.999853)
+ (xy 191.44884 144.999854)
+ (xy 191.392515 145.005909)
+ (xy 191.257669 145.056204)
+ (xy 191.142454 145.142454)
+ (xy 191.056204 145.257668)
+ (xy 191.005909 145.392516)
+ (xy 191.00079 145.440133)
+ (xy 190.9995 145.452127)
+ (xy 190.9995 145.455448)
+ (xy 190.9995 145.455449)
+ (xy 190.9995 148.54456)
+ (xy 190.9995 148.544578)
+ (xy 188.0005 148.544578)
+ (xy 188.0005 141.25)
+ (xy 194.475001 141.25)
+ (xy 194.475001 141.671829)
+ (xy 194.475321 141.678111)
+ (xy 194.485493 141.777695)
+ (xy 194.540642 141.944122)
+ (xy 194.632683 142.093345)
+ (xy 194.756654 142.217316)
+ (xy 194.905877 142.309357)
+ (xy 195.072303 142.364506)
+ (xy 195.17189 142.37468)
+ (xy 195.178168 142.374999)
+ (xy 195.287499 142.374999)
+ (xy 195.2875 142.374998)
+ (xy 195.2875 141.25)
+ (xy 195.7875 141.25)
+ (xy 195.7875 142.374999)
+ (xy 195.896829 142.374999)
+ (xy 195.903111 142.374678)
+ (xy 196.002695 142.364506)
+ (xy 196.169122 142.309357)
+ (xy 196.318345 142.217316)
+ (xy 196.442316 142.093345)
+ (xy 196.534357 141.944122)
+ (xy 196.589506 141.777696)
+ (xy 196.59968 141.678109)
+ (xy 196.6 141.671831)
+ (xy 196.6 141.25)
+ (xy 195.7875 141.25)
+ (xy 195.2875 141.25)
+ (xy 194.475001 141.25)
+ (xy 188.0005 141.25)
+ (xy 188.0005 140.75)
+ (xy 194.475 140.75)
+ (xy 195.2875 140.75)
+ (xy 195.2875 139.625)
+ (xy 195.7875 139.625)
+ (xy 195.7875 140.75)
+ (xy 196.599999 140.75)
+ (xy 196.599999 140.32817)
+ (xy 196.599678 140.321888)
+ (xy 196.589506 140.222304)
+ (xy 196.534357 140.055877)
+ (xy 196.442316 139.906654)
+ (xy 196.318345 139.782683)
+ (xy 196.169122 139.690642)
+ (xy 196.002696 139.635493)
+ (xy 195.903109 139.625319)
+ (xy 195.896832 139.625)
+ (xy 195.7875 139.625)
+ (xy 195.2875 139.625)
+ (xy 195.178171 139.625)
+ (xy 195.171888 139.625321)
+ (xy 195.072304 139.635493)
+ (xy 194.905877 139.690642)
+ (xy 194.756654 139.782683)
+ (xy 194.632683 139.906654)
+ (xy 194.540642 140.055877)
+ (xy 194.485493 140.222303)
+ (xy 194.475319 140.32189)
+ (xy 194.475 140.328168)
+ (xy 194.475 140.75)
+ (xy 188.0005 140.75)
+ (xy 188.0005 138.1245)
+ (xy 188.020185 138.057461)
+ (xy 188.072989 138.011706)
+ (xy 188.1245 138.0005)
+ (xy 222.8755 138.0005)
+ )
+ )
+ )
+)
diff --git a/qa/data/cli/basic_test/basic_test.kicad_pro b/qa/data/cli/basic_test/basic_test.kicad_pro
new file mode 100644
index 0000000000..1fff29ff44
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.kicad_pro
@@ -0,0 +1,477 @@
+{
+ "board": {
+ "3dviewports": [],
+ "design_settings": {
+ "defaults": {
+ "board_outline_line_width": 0.09999999999999999,
+ "copper_line_width": 0.19999999999999998,
+ "copper_text_italic": false,
+ "copper_text_size_h": 1.5,
+ "copper_text_size_v": 1.5,
+ "copper_text_thickness": 0.3,
+ "copper_text_upright": false,
+ "courtyard_line_width": 0.049999999999999996,
+ "dimension_precision": 4,
+ "dimension_units": 3,
+ "dimensions": {
+ "arrow_length": 1270000,
+ "extension_offset": 500000,
+ "keep_text_aligned": true,
+ "suppress_zeroes": false,
+ "text_position": 0,
+ "units_format": 1
+ },
+ "fab_line_width": 0.09999999999999999,
+ "fab_text_italic": false,
+ "fab_text_size_h": 1.0,
+ "fab_text_size_v": 1.0,
+ "fab_text_thickness": 0.15,
+ "fab_text_upright": false,
+ "other_line_width": 0.15,
+ "other_text_italic": false,
+ "other_text_size_h": 1.0,
+ "other_text_size_v": 1.0,
+ "other_text_thickness": 0.15,
+ "other_text_upright": false,
+ "pads": {
+ "drill": 0.762,
+ "height": 1.524,
+ "width": 1.524
+ },
+ "silk_line_width": 0.15,
+ "silk_text_italic": false,
+ "silk_text_size_h": 1.0,
+ "silk_text_size_v": 1.0,
+ "silk_text_thickness": 0.15,
+ "silk_text_upright": false,
+ "zones": {
+ "min_clearance": 0.5
+ }
+ },
+ "diff_pair_dimensions": [],
+ "drc_exclusions": [],
+ "meta": {
+ "version": 2
+ },
+ "rule_severities": {
+ "annular_width": "error",
+ "clearance": "error",
+ "connection_width": "warning",
+ "copper_edge_clearance": "error",
+ "copper_sliver": "warning",
+ "courtyards_overlap": "error",
+ "diff_pair_gap_out_of_range": "error",
+ "diff_pair_uncoupled_length_too_long": "error",
+ "drill_out_of_range": "error",
+ "duplicate_footprints": "warning",
+ "extra_footprint": "warning",
+ "footprint": "error",
+ "footprint_type_mismatch": "ignore",
+ "hole_clearance": "error",
+ "hole_near_hole": "error",
+ "invalid_outline": "error",
+ "isolated_copper": "warning",
+ "item_on_disabled_layer": "error",
+ "items_not_allowed": "error",
+ "length_out_of_range": "error",
+ "lib_footprint_issues": "warning",
+ "lib_footprint_mismatch": "warning",
+ "malformed_courtyard": "error",
+ "microvia_drill_out_of_range": "error",
+ "missing_courtyard": "ignore",
+ "missing_footprint": "warning",
+ "net_conflict": "warning",
+ "npth_inside_courtyard": "ignore",
+ "padstack": "warning",
+ "pth_inside_courtyard": "ignore",
+ "shorting_items": "error",
+ "silk_edge_clearance": "warning",
+ "silk_over_copper": "warning",
+ "silk_overlap": "warning",
+ "skew_out_of_range": "error",
+ "solder_mask_bridge": "error",
+ "starved_thermal": "error",
+ "text_height": "warning",
+ "text_thickness": "warning",
+ "through_hole_pad_without_hole": "error",
+ "too_many_vias": "error",
+ "track_dangling": "warning",
+ "track_width": "error",
+ "tracks_crossing": "error",
+ "unconnected_items": "error",
+ "unresolved_variable": "error",
+ "via_dangling": "warning",
+ "zones_intersect": "error"
+ },
+ "rules": {
+ "max_error": 0.005,
+ "min_clearance": 0.0,
+ "min_connection": 0.0,
+ "min_copper_edge_clearance": 0.0,
+ "min_hole_clearance": 0.25,
+ "min_hole_to_hole": 0.25,
+ "min_microvia_diameter": 0.19999999999999998,
+ "min_microvia_drill": 0.09999999999999999,
+ "min_resolved_spokes": 2,
+ "min_silk_clearance": 0.0,
+ "min_text_height": 0.7999999999999999,
+ "min_text_thickness": 0.08,
+ "min_through_hole_diameter": 0.3,
+ "min_track_width": 0.0,
+ "min_via_annular_width": 0.09999999999999999,
+ "min_via_diameter": 0.5,
+ "solder_mask_clearance": 0.0,
+ "solder_mask_min_width": 0.0,
+ "solder_mask_to_copper_clearance": 0.0,
+ "use_height_for_length_calcs": true
+ },
+ "teardrop_options": [
+ {
+ "td_allow_use_two_tracks": true,
+ "td_curve_segcount": 5,
+ "td_on_pad_in_zone": false,
+ "td_onpadsmd": true,
+ "td_onroundshapesonly": false,
+ "td_ontrackend": false,
+ "td_onviapad": true
+ }
+ ],
+ "teardrop_parameters": [
+ {
+ "td_curve_segcount": 0,
+ "td_height_ratio": 1.0,
+ "td_length_ratio": 0.5,
+ "td_maxheight": 2.0,
+ "td_maxlen": 1.0,
+ "td_target_name": "td_round_shape",
+ "td_width_to_size_filter_ratio": 0.9
+ },
+ {
+ "td_curve_segcount": 0,
+ "td_height_ratio": 1.0,
+ "td_length_ratio": 0.5,
+ "td_maxheight": 2.0,
+ "td_maxlen": 1.0,
+ "td_target_name": "td_rect_shape",
+ "td_width_to_size_filter_ratio": 0.9
+ },
+ {
+ "td_curve_segcount": 0,
+ "td_height_ratio": 1.0,
+ "td_length_ratio": 0.5,
+ "td_maxheight": 2.0,
+ "td_maxlen": 1.0,
+ "td_target_name": "td_track_end",
+ "td_width_to_size_filter_ratio": 0.9
+ }
+ ],
+ "track_widths": [],
+ "via_dimensions": [],
+ "zones_allow_external_fillets": false
+ },
+ "layer_presets": [],
+ "viewports": []
+ },
+ "boards": [],
+ "cvpcb": {
+ "equivalence_files": []
+ },
+ "erc": {
+ "erc_exclusions": [],
+ "meta": {
+ "version": 0
+ },
+ "pin_map": [
+ [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 2,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 2,
+ 2,
+ 2,
+ 2
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 1,
+ 0,
+ 1,
+ 2
+ ],
+ [
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 1,
+ 2,
+ 1,
+ 1,
+ 2
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2
+ ],
+ [
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 0,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 2
+ ],
+ [
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 2,
+ 1,
+ 2,
+ 0,
+ 0,
+ 1,
+ 0,
+ 2,
+ 2,
+ 2,
+ 2
+ ],
+ [
+ 0,
+ 2,
+ 0,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 2,
+ 0,
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 2,
+ 1,
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 2,
+ 0,
+ 0,
+ 2
+ ],
+ [
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 2
+ ]
+ ],
+ "rule_severities": {
+ "bus_definition_conflict": "error",
+ "bus_entry_needed": "error",
+ "bus_to_bus_conflict": "error",
+ "bus_to_net_conflict": "error",
+ "conflicting_netclasses": "error",
+ "different_unit_footprint": "error",
+ "different_unit_net": "error",
+ "duplicate_reference": "error",
+ "duplicate_sheet_names": "error",
+ "endpoint_off_grid": "warning",
+ "extra_units": "error",
+ "global_label_dangling": "warning",
+ "hier_label_mismatch": "error",
+ "label_dangling": "error",
+ "lib_symbol_issues": "warning",
+ "missing_bidi_pin": "warning",
+ "missing_input_pin": "warning",
+ "missing_power_pin": "error",
+ "missing_unit": "warning",
+ "multiple_net_names": "warning",
+ "net_not_bus_member": "warning",
+ "no_connect_connected": "warning",
+ "no_connect_dangling": "warning",
+ "pin_not_connected": "error",
+ "pin_not_driven": "error",
+ "pin_to_pin": "warning",
+ "power_pin_not_driven": "error",
+ "similar_labels": "warning",
+ "simulation_model_issue": "error",
+ "unannotated": "error",
+ "unit_value_mismatch": "error",
+ "unresolved_variable": "error",
+ "wire_dangling": "error"
+ }
+ },
+ "libraries": {
+ "pinned_footprint_libs": [],
+ "pinned_symbol_libs": []
+ },
+ "meta": {
+ "filename": "CliTest.kicad_pro",
+ "version": 1
+ },
+ "net_settings": {
+ "classes": [
+ {
+ "bus_width": 12,
+ "clearance": 0.2,
+ "diff_pair_gap": 0.25,
+ "diff_pair_via_gap": 0.25,
+ "diff_pair_width": 0.2,
+ "line_style": 0,
+ "microvia_diameter": 0.3,
+ "microvia_drill": 0.1,
+ "name": "Default",
+ "pcb_color": "rgba(0, 0, 0, 0.000)",
+ "schematic_color": "rgba(0, 0, 0, 0.000)",
+ "track_width": 0.25,
+ "via_diameter": 0.8,
+ "via_drill": 0.4,
+ "wire_width": 6
+ }
+ ],
+ "meta": {
+ "version": 3
+ },
+ "net_colors": null,
+ "netclass_assignments": null,
+ "netclass_patterns": []
+ },
+ "pcbnew": {
+ "last_paths": {
+ "gencad": "",
+ "idf": "",
+ "netlist": "",
+ "specctra_dsn": "",
+ "step": "",
+ "vrml": ""
+ },
+ "page_layout_descr_file": "custom_ds.kicad_wks"
+ },
+ "schematic": {
+ "annotate_start_num": 0,
+ "drawing": {
+ "dashed_lines_dash_length_ratio": 12.0,
+ "dashed_lines_gap_length_ratio": 3.0,
+ "default_line_thickness": 6.0,
+ "default_text_size": 50.0,
+ "field_names": [],
+ "intersheets_ref_own_page": false,
+ "intersheets_ref_prefix": "",
+ "intersheets_ref_short": false,
+ "intersheets_ref_show": false,
+ "intersheets_ref_suffix": "",
+ "junction_size_choice": 3,
+ "label_size_ratio": 0.375,
+ "pin_symbol_size": 25.0,
+ "text_offset_ratio": 0.15
+ },
+ "legacy_lib_dir": "",
+ "legacy_lib_list": [],
+ "meta": {
+ "version": 1
+ },
+ "net_format_name": "",
+ "page_layout_descr_file": "custom_ds.kicad_wks",
+ "plot_directory": "",
+ "spice_current_sheet_as_root": false,
+ "spice_external_command": "spice \"%I\"",
+ "spice_model_current_sheet_as_root": true,
+ "spice_save_all_currents": false,
+ "spice_save_all_voltages": false,
+ "subpart_first_id": 65,
+ "subpart_id_separator": 0
+ },
+ "sheets": [
+ [
+ "64c481bc-ea0a-4f9c-a176-3729f4987c58",
+ ""
+ ]
+ ],
+ "text_variables": {}
+}
diff --git a/qa/data/cli/basic_test/basic_test.kicad_sch b/qa/data/cli/basic_test/basic_test.kicad_sch
new file mode 100644
index 0000000000..8335ed4355
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.kicad_sch
@@ -0,0 +1,767 @@
+(kicad_sch (version 20230121) (generator eeschema)
+
+ (uuid 64c481bc-ea0a-4f9c-a176-3729f4987c58)
+
+ (paper "A4")
+
+ (title_block
+ (title "Cli Test")
+ (date "2023-04-28")
+ (rev "1")
+ (company "KiCad")
+ )
+
+ (lib_symbols
+ (symbol "Amplifier_Operational:TLV2371DBV" (pin_names (offset 0.127)) (in_bom yes) (on_board yes)
+ (property "Reference" "U" (at -1.27 6.35 0)
+ (effects (font (size 1.27 1.27)) (justify left))
+ )
+ (property "Value" "TLV2371DBV" (at -1.27 3.81 0)
+ (effects (font (size 1.27 1.27)) (justify left))
+ )
+ (property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (at -2.54 -5.08 0)
+ (effects (font (size 1.27 1.27)) (justify left) hide)
+ )
+ (property "Datasheet" "http://www.ti.com/lit/ds/symlink/tlv2375.pdf" (at 0 5.08 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_keywords" "single opamp" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_description" "Rail-to-Rail Input/Output Operational Amplifier, SOT-23-5" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_fp_filters" "SOT?23*" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (symbol "TLV2371DBV_0_1"
+ (polyline
+ (pts
+ (xy -5.08 5.08)
+ (xy 5.08 0)
+ (xy -5.08 -5.08)
+ (xy -5.08 5.08)
+ )
+ (stroke (width 0.254) (type default))
+ (fill (type background))
+ )
+ (pin power_in line (at -2.54 -7.62 90) (length 3.81)
+ (name "V-" (effects (font (size 1.27 1.27))))
+ (number "2" (effects (font (size 1.27 1.27))))
+ )
+ (pin power_in line (at -2.54 7.62 270) (length 3.81)
+ (name "V+" (effects (font (size 1.27 1.27))))
+ (number "5" (effects (font (size 1.27 1.27))))
+ )
+ )
+ (symbol "TLV2371DBV_1_1"
+ (pin output line (at 7.62 0 180) (length 2.54)
+ (name "~" (effects (font (size 1.27 1.27))))
+ (number "1" (effects (font (size 1.27 1.27))))
+ )
+ (pin input line (at -7.62 2.54 0) (length 2.54)
+ (name "+" (effects (font (size 1.27 1.27))))
+ (number "3" (effects (font (size 1.27 1.27))))
+ )
+ (pin input line (at -7.62 -2.54 0) (length 2.54)
+ (name "-" (effects (font (size 1.27 1.27))))
+ (number "4" (effects (font (size 1.27 1.27))))
+ )
+ )
+ )
+ (symbol "Connector:Conn_01x01_Pin" (pin_names (offset 1.016) hide) (in_bom yes) (on_board yes)
+ (property "Reference" "J" (at 0 2.54 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "Conn_01x01_Pin" (at 0 -2.54 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_locked" "" (at 0 0 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "ki_keywords" "connector" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_description" "Generic connector, single row, 01x01, script generated" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_fp_filters" "Connector*:*_1x??_*" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (symbol "Conn_01x01_Pin_1_1"
+ (polyline
+ (pts
+ (xy 1.27 0)
+ (xy 0.8636 0)
+ )
+ (stroke (width 0.1524) (type default))
+ (fill (type none))
+ )
+ (rectangle (start 0.8636 0.127) (end 0 -0.127)
+ (stroke (width 0.1524) (type default))
+ (fill (type outline))
+ )
+ (pin passive line (at 5.08 0 180) (length 3.81)
+ (name "Pin_1" (effects (font (size 1.27 1.27))))
+ (number "1" (effects (font (size 1.27 1.27))))
+ )
+ )
+ )
+ (symbol "Device:C_Small" (pin_numbers hide) (pin_names (offset 0.254) hide) (in_bom yes) (on_board yes)
+ (property "Reference" "C" (at 0.254 1.778 0)
+ (effects (font (size 1.27 1.27)) (justify left))
+ )
+ (property "Value" "C_Small" (at 0.254 -2.032 0)
+ (effects (font (size 1.27 1.27)) (justify left))
+ )
+ (property "Footprint" "" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_keywords" "capacitor cap" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_description" "Unpolarized capacitor, small symbol" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_fp_filters" "C_*" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (symbol "C_Small_0_1"
+ (polyline
+ (pts
+ (xy -1.524 -0.508)
+ (xy 1.524 -0.508)
+ )
+ (stroke (width 0.3302) (type default))
+ (fill (type none))
+ )
+ (polyline
+ (pts
+ (xy -1.524 0.508)
+ (xy 1.524 0.508)
+ )
+ (stroke (width 0.3048) (type default))
+ (fill (type none))
+ )
+ )
+ (symbol "C_Small_1_1"
+ (pin passive line (at 0 2.54 270) (length 2.032)
+ (name "~" (effects (font (size 1.27 1.27))))
+ (number "1" (effects (font (size 1.27 1.27))))
+ )
+ (pin passive line (at 0 -2.54 90) (length 2.032)
+ (name "~" (effects (font (size 1.27 1.27))))
+ (number "2" (effects (font (size 1.27 1.27))))
+ )
+ )
+ )
+ (symbol "Device:R_US" (pin_numbers hide) (pin_names (offset 0)) (in_bom yes) (on_board yes)
+ (property "Reference" "R" (at 2.54 0 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "R_US" (at -2.54 0 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "" (at 1.016 -0.254 90)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_keywords" "R res resistor" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_description" "Resistor, US symbol" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_fp_filters" "R_*" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (symbol "R_US_0_1"
+ (polyline
+ (pts
+ (xy 0 -2.286)
+ (xy 0 -2.54)
+ )
+ (stroke (width 0) (type default))
+ (fill (type none))
+ )
+ (polyline
+ (pts
+ (xy 0 2.286)
+ (xy 0 2.54)
+ )
+ (stroke (width 0) (type default))
+ (fill (type none))
+ )
+ (polyline
+ (pts
+ (xy 0 -0.762)
+ (xy 1.016 -1.143)
+ (xy 0 -1.524)
+ (xy -1.016 -1.905)
+ (xy 0 -2.286)
+ )
+ (stroke (width 0) (type default))
+ (fill (type none))
+ )
+ (polyline
+ (pts
+ (xy 0 0.762)
+ (xy 1.016 0.381)
+ (xy 0 0)
+ (xy -1.016 -0.381)
+ (xy 0 -0.762)
+ )
+ (stroke (width 0) (type default))
+ (fill (type none))
+ )
+ (polyline
+ (pts
+ (xy 0 2.286)
+ (xy 1.016 1.905)
+ (xy 0 1.524)
+ (xy -1.016 1.143)
+ (xy 0 0.762)
+ )
+ (stroke (width 0) (type default))
+ (fill (type none))
+ )
+ )
+ (symbol "R_US_1_1"
+ (pin passive line (at 0 3.81 270) (length 1.27)
+ (name "~" (effects (font (size 1.27 1.27))))
+ (number "1" (effects (font (size 1.27 1.27))))
+ )
+ (pin passive line (at 0 -3.81 90) (length 1.27)
+ (name "~" (effects (font (size 1.27 1.27))))
+ (number "2" (effects (font (size 1.27 1.27))))
+ )
+ )
+ )
+ (symbol "power:GND" (power) (pin_names (offset 0)) (in_bom yes) (on_board yes)
+ (property "Reference" "#PWR" (at 0 -6.35 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Value" "GND" (at 0 -3.81 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_keywords" "global power" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "ki_description" "Power symbol creates a global label with name \"GND\" , ground" (at 0 0 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (symbol "GND_0_1"
+ (polyline
+ (pts
+ (xy 0 0)
+ (xy 0 -1.27)
+ (xy 1.27 -1.27)
+ (xy 0 -2.54)
+ (xy -1.27 -1.27)
+ (xy 0 -1.27)
+ )
+ (stroke (width 0) (type default))
+ (fill (type none))
+ )
+ )
+ (symbol "GND_1_1"
+ (pin power_in line (at 0 0 270) (length 0) hide
+ (name "GND" (effects (font (size 1.27 1.27))))
+ (number "1" (effects (font (size 1.27 1.27))))
+ )
+ )
+ )
+ )
+
+ (junction (at 134.62 93.98) (diameter 0) (color 0 0 0 0)
+ (uuid 95b8d484-12f8-4fca-a194-a4164930c127)
+ )
+ (junction (at 160.02 78.74) (diameter 0) (color 0 0 0 0)
+ (uuid ea040fa8-aa2d-4fed-8787-7e26c1c669b8)
+ )
+ (junction (at 121.92 76.2) (diameter 0) (color 0 0 0 0)
+ (uuid f12e4844-3bfa-4ba9-a948-8eea756cd6f7)
+ )
+
+ (wire (pts (xy 111.76 99.06) (xy 111.76 100.33))
+ (stroke (width 0) (type default))
+ (uuid 08af12ec-4712-41fd-9ec7-7bcab2a5653c)
+ )
+ (wire (pts (xy 134.62 81.28) (xy 134.62 93.98))
+ (stroke (width 0) (type default))
+ (uuid 1aa5be3d-8dd9-4569-a84e-5cae7bf092e9)
+ )
+ (wire (pts (xy 160.02 78.74) (xy 172.72 78.74))
+ (stroke (width 0) (type default))
+ (uuid 1aa864e1-a609-4d35-b2c5-4c241a86a849)
+ )
+ (wire (pts (xy 160.02 93.98) (xy 160.02 78.74))
+ (stroke (width 0) (type default))
+ (uuid 3623525b-e0d6-4d60-bce4-bcaaa7767775)
+ )
+ (wire (pts (xy 121.92 76.2) (xy 135.89 76.2))
+ (stroke (width 0) (type default))
+ (uuid 4fbe4c6e-56e8-4bd6-9c5f-c3770f43ba09)
+ )
+ (wire (pts (xy 110.49 99.06) (xy 111.76 99.06))
+ (stroke (width 0) (type default))
+ (uuid 5407c84a-af3e-4bab-aebd-073a09a5ba82)
+ )
+ (wire (pts (xy 110.49 76.2) (xy 111.76 76.2))
+ (stroke (width 0) (type default))
+ (uuid 5966e8da-c16f-47e7-a174-c66471082756)
+ )
+ (wire (pts (xy 140.97 71.12) (xy 140.97 63.5))
+ (stroke (width 0) (type default))
+ (uuid 695324a4-6328-4985-8945-29ba869bbea5)
+ )
+ (wire (pts (xy 121.92 83.82) (xy 121.92 82.55))
+ (stroke (width 0) (type default))
+ (uuid 6ae72b5a-69de-4720-b826-8cf1ab7a0f70)
+ )
+ (wire (pts (xy 123.19 93.98) (xy 119.38 93.98))
+ (stroke (width 0) (type default))
+ (uuid 6f677f05-ff17-4de3-87fd-bde2fd6b29f2)
+ )
+ (wire (pts (xy 135.89 81.28) (xy 134.62 81.28))
+ (stroke (width 0) (type default))
+ (uuid 772392e2-1c1a-47d6-ba2d-798b15f2f550)
+ )
+ (wire (pts (xy 119.38 93.98) (xy 119.38 96.52))
+ (stroke (width 0) (type default))
+ (uuid 97d23f6f-bf0b-4d84-810a-f7e53fa2cac7)
+ )
+ (wire (pts (xy 130.81 93.98) (xy 134.62 93.98))
+ (stroke (width 0) (type default))
+ (uuid 9a5bdf49-1e3d-4ce7-b0a1-89fb629c489b)
+ )
+ (wire (pts (xy 121.92 76.2) (xy 121.92 77.47))
+ (stroke (width 0) (type default))
+ (uuid aa725e94-39a8-4607-be85-ba7f946ce45d)
+ )
+ (wire (pts (xy 110.49 63.5) (xy 140.97 63.5))
+ (stroke (width 0) (type default))
+ (uuid adc5346d-3039-4115-8bdc-5cd64da5204c)
+ )
+ (wire (pts (xy 140.97 86.36) (xy 140.97 87.63))
+ (stroke (width 0) (type default))
+ (uuid b4d811be-7415-49a0-af31-59099da811e5)
+ )
+ (wire (pts (xy 119.38 76.2) (xy 121.92 76.2))
+ (stroke (width 0) (type default))
+ (uuid b80a0ece-ed6d-4f10-b3c2-34ffb7192b4e)
+ )
+ (wire (pts (xy 151.13 78.74) (xy 160.02 78.74))
+ (stroke (width 0) (type default))
+ (uuid ca4b7553-b18c-4839-a487-365a6f099259)
+ )
+ (wire (pts (xy 134.62 93.98) (xy 146.05 93.98))
+ (stroke (width 0) (type default))
+ (uuid ef499c8a-f99c-4656-9267-fa7ca70da5dc)
+ )
+ (wire (pts (xy 153.67 93.98) (xy 160.02 93.98))
+ (stroke (width 0) (type default))
+ (uuid f5053032-736a-4d5d-adf8-a019d15a0d8e)
+ )
+
+ (circle (center 49.53 77.47) (radius 7.1842)
+ (stroke (width 0) (type default))
+ (fill (type color) (color 255 255 0 1))
+ (uuid 6b614d85-9a1b-4527-9512-5b4a0b30fa93)
+ )
+ (rectangle (start 38.1 52.07) (end 60.96 102.87)
+ (stroke (width 0) (type dash))
+ (fill (type none))
+ (uuid 6de281c7-d339-413a-a2e5-2d9d950b9b4a)
+ )
+ (circle (center 49.53 93.98) (radius 7.1842)
+ (stroke (width 0) (type default))
+ (fill (type color) (color 194 0 0 1))
+ (uuid 8a164146-df39-4696-b093-49f575e4883e)
+ )
+ (circle (center 49.53 60.96) (radius 7.1842)
+ (stroke (width 0) (type default))
+ (fill (type color) (color 0 132 0 1))
+ (uuid acadf2ad-71ef-4007-b744-01eaa5b11cb5)
+ )
+
+ (text_box "The above is a single pole low pass filter for no other reason than something on a page."
+ (at 140.97 110.49 0) (size 38.1 17.78)
+ (stroke (width 0) (type default))
+ (fill (type color) (color 255 255 194 1))
+ (effects (font (size 1.27 1.27)) (justify left top))
+ (uuid 35be3d14-1fd5-4760-8b4c-5c287964f680)
+ )
+
+ (text "CLI TEST" (at 127 52.07 0)
+ (effects (font (size 5 5) (thickness 0.254) bold) (justify left bottom))
+ (uuid 9be20d76-216a-4288-83e8-5765bd37d7f3)
+ )
+
+ (label "VCC" (at 124.46 63.5 0) (fields_autoplaced)
+ (effects (font (size 1.27 1.27)) (justify left bottom))
+ (uuid 2d398714-012b-4433-971b-a44c26328bb0)
+ )
+ (label "IN" (at 110.49 76.2 0) (fields_autoplaced)
+ (effects (font (size 1.27 1.27)) (justify left bottom))
+ (uuid 5fb63630-676f-4166-be5d-d554c8998770)
+ )
+ (label "OUT" (at 167.64 78.74 0) (fields_autoplaced)
+ (effects (font (size 1.27 1.27)) (justify left bottom))
+ (uuid e979b1ed-d6d7-4ae2-ba25-df57e59c3737)
+ )
+
+ (symbol (lib_id "power:GND") (at 119.38 96.52 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
+ (uuid 19ba0538-2910-44b8-9336-edf1ff095912)
+ (property "Reference" "#PWR01" (at 119.38 102.87 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Value" "GND" (at 119.38 101.6 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "" (at 119.38 96.52 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "" (at 119.38 96.52 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid d244be40-4f72-4136-9d69-8cadcdfa193b))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "#PWR01") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Connector:Conn_01x01_Pin") (at 105.41 63.5 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid 203ec3c1-122c-4087-8f6d-2a0dd0b941e6)
+ (property "Reference" "J1" (at 104.14 62.23 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "Conn_01x01_Pin" (at 111.76 64.77 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Footprint" "TestPoint:TestPoint_Pad_3.0x3.0mm" (at 105.41 63.5 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 105.41 63.5 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 4ce4f6e6-8253-4006-a8f1-6feddc16e0c0))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "J1") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Connector:Conn_01x01_Pin") (at 105.41 76.2 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid 2a9f5f63-d864-4898-ae3e-539c635e8f2c)
+ (property "Reference" "J2" (at 104.14 74.93 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "Conn_01x01_Pin" (at 111.76 77.47 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Footprint" "TestPoint:TestPoint_Pad_3.0x3.0mm" (at 105.41 76.2 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 105.41 76.2 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 58e5e7d7-252f-47c7-a985-52c74ed5f439))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "J2") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "power:GND") (at 121.92 83.82 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid 5d9a8cf4-5c54-4c57-accb-dd6295272287)
+ (property "Reference" "#PWR03" (at 121.92 90.17 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Value" "GND" (at 121.92 87.63 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "" (at 121.92 83.82 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "" (at 121.92 83.82 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid dd0c4950-cf3a-44b4-a8df-50f0786976ed))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "#PWR03") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "power:GND") (at 140.97 87.63 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid 62fef766-bfdd-4a4a-a8fa-79183473dd3b)
+ (property "Reference" "#PWR02" (at 140.97 93.98 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Value" "GND" (at 143.51 90.17 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "" (at 140.97 87.63 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "" (at 140.97 87.63 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid bda821c9-4b59-46e7-84b2-e4cf65772b17))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "#PWR02") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Connector:Conn_01x01_Pin") (at 105.41 99.06 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid 789295bb-2cfb-4a2b-977f-b3831d5aa975)
+ (property "Reference" "J4" (at 104.14 97.79 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "Conn_01x01_Pin" (at 111.76 100.33 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Footprint" "TestPoint:TestPoint_Pad_3.0x3.0mm" (at 105.41 99.06 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 105.41 99.06 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 7daddeb4-fd3c-47bd-b053-795e23187826))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "J4") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Device:C_Small") (at 121.92 80.01 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
+ (uuid 8a4f4d93-4e0c-474b-8535-68c4fef6e828)
+ (property "Reference" "C1" (at 124.46 79.3813 0)
+ (effects (font (size 1.27 1.27)) (justify left))
+ )
+ (property "Value" "10u" (at 124.46 81.9213 0)
+ (effects (font (size 1.27 1.27)) (justify left))
+ )
+ (property "Footprint" "Capacitor_SMD:C_1206_3216Metric" (at 121.92 80.01 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 121.92 80.01 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 1e8e8c80-97d7-45fc-9b74-c06bf8646533))
+ (pin "2" (uuid ea2e2778-b890-4d75-9097-7cc368e3c09c))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "C1") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Device:R_US") (at 149.86 93.98 90) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
+ (uuid 8b2eeae5-e1ad-4999-aeb9-01fe06aff8b1)
+ (property "Reference" "R2" (at 149.86 88.9 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "10k" (at 149.86 91.44 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "Resistor_SMD:R_1206_3216Metric" (at 150.114 92.964 90)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 149.86 93.98 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid c67a5bf1-d95a-484e-b01b-b912cdf3db71))
+ (pin "2" (uuid 9f220203-e10e-4e38-b114-cd5b27962ab0))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "R2") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Device:R_US") (at 115.57 76.2 90) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
+ (uuid 985a669c-9a7f-4b74-bb4f-9487b164d3aa)
+ (property "Reference" "R3" (at 115.57 71.12 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "10k" (at 115.57 73.66 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "Resistor_SMD:R_1206_3216Metric" (at 115.824 75.184 90)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 115.57 76.2 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 86d62a66-2048-4150-81a5-c4b0916dbe77))
+ (pin "2" (uuid e0046d70-f42a-4632-8315-782fb389a067))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "R3") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Connector:Conn_01x01_Pin") (at 177.8 78.74 0) (mirror y) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid 9efa520e-00e1-47a2-b8dc-bf8e2121d065)
+ (property "Reference" "J3" (at 177.165 74.93 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "Conn_01x01_Pin" (at 180.34 81.28 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Footprint" "TestPoint:TestPoint_Pad_3.0x3.0mm" (at 177.8 78.74 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 177.8 78.74 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 79714b42-1363-4d85-a94f-70e20e3cb143))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "J3") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "power:GND") (at 111.76 100.33 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid a45b22f2-0929-43b6-b1fb-e2272cb68106)
+ (property "Reference" "#PWR04" (at 111.76 106.68 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Value" "GND" (at 114.3 102.87 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "" (at 111.76 100.33 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "" (at 111.76 100.33 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 049a3f7b-129b-48ad-a49a-3897bf04a814))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "#PWR04") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Amplifier_Operational:TLV2371DBV") (at 143.51 78.74 0) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no)
+ (uuid b8a40376-5e4f-459f-9886-5e9ee83698cf)
+ (property "Reference" "U1" (at 146.05 82.55 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "TLV2371DBV" (at 149.86 85.09 0)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (at 140.97 83.82 0)
+ (effects (font (size 1.27 1.27)) (justify left) hide)
+ )
+ (property "Datasheet" "http://www.ti.com/lit/ds/symlink/tlv2375.pdf" (at 143.51 73.66 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "2" (uuid 74f1f498-1594-4d18-a0fd-b624cedbd22a))
+ (pin "5" (uuid 0123f423-4b4c-467f-8b7d-43421b82330d))
+ (pin "1" (uuid fc161e33-0433-4df3-846a-3fafd4eccab8))
+ (pin "3" (uuid c64f9bc2-9b61-465a-b225-86256d9505ac))
+ (pin "4" (uuid 44de0295-df78-42b3-bcdc-a158404b85d9))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "U1") (unit 1)
+ )
+ )
+ )
+ )
+
+ (symbol (lib_id "Device:R_US") (at 127 93.98 90) (unit 1)
+ (in_bom yes) (on_board yes) (dnp no) (fields_autoplaced)
+ (uuid eaf8668d-aec7-4209-a3f9-fc7bfb5b931b)
+ (property "Reference" "R1" (at 127 88.9 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Value" "10k" (at 127 91.44 90)
+ (effects (font (size 1.27 1.27)))
+ )
+ (property "Footprint" "Resistor_SMD:R_1206_3216Metric" (at 127.254 92.964 90)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (property "Datasheet" "~" (at 127 93.98 0)
+ (effects (font (size 1.27 1.27)) hide)
+ )
+ (pin "1" (uuid 43d31f44-35d7-4970-8846-3666070c5be4))
+ (pin "2" (uuid b2590023-5594-46a0-8b13-49b4719fab4f))
+ (instances
+ (project "CliTest"
+ (path "/64c481bc-ea0a-4f9c-a176-3729f4987c58"
+ (reference "R1") (unit 1)
+ )
+ )
+ )
+ )
+
+ (sheet_instances
+ (path "/" (page "1"))
+ )
+)
diff --git a/qa/data/cli/basic_test/basic_test.netlist.cadstar b/qa/data/cli/basic_test/basic_test.netlist.cadstar
new file mode 100644
index 0000000000..8493a84522
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.netlist.cadstar
@@ -0,0 +1,40 @@
+.HEA
+.TIM 5/2/2023 8:59:04 PM
+.APP "Eeschema 7.99.0-893-g4a5939297b-dirty"
+.TYP FULL
+
+.ADD_COM R1 "10k" "Resistor_SMD:R_1206_3216Metric"
+.ADD_COM C1 "10u" "Capacitor_SMD:C_1206_3216Metric"
+.ADD_COM R2 "10k" "Resistor_SMD:R_1206_3216Metric"
+.ADD_COM J3 "Conn_01x01_Pin" "TestPoint:TestPoint_Pad_3.0x3.0mm"
+.ADD_COM J2 "Conn_01x01_Pin" "TestPoint:TestPoint_Pad_3.0x3.0mm"
+.ADD_COM J1 "Conn_01x01_Pin" "TestPoint:TestPoint_Pad_3.0x3.0mm"
+.ADD_COM J4 "Conn_01x01_Pin" "TestPoint:TestPoint_Pad_3.0x3.0mm"
+.ADD_COM R3 "10k" "Resistor_SMD:R_1206_3216Metric"
+.ADD_COM U1 "TLV2371DBV" "Package_TO_SOT_SMD:SOT-23-5"
+
+
+.ADD_TER J3 1 "/OUT"
+.TER R2 2
+ U1 1
+
+.ADD_TER J1 1 "/VCC"
+.TER U1 5
+
+.ADD_TER C1 1 "Net-(U1-+)"
+.TER R3 2
+ U1 3
+
+.ADD_TER R1 2 "Net-(U1--)"
+.TER R2 1
+ U1 4
+
+.ADD_TER C1 2 "GND"
+.TER J4 1
+ R1 1
+ U1 2
+
+.ADD_TER J2 1 "/IN"
+.TER R3 1
+
+.END
diff --git a/qa/data/cli/basic_test/basic_test.netlist.kicadsexpr b/qa/data/cli/basic_test/basic_test.netlist.kicadsexpr
new file mode 100644
index 0000000000..c0bc9d8e3f
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.netlist.kicadsexpr
@@ -0,0 +1,196 @@
+(export (version "E")
+ (design
+ (source "E:\\kicad\\kicad\\qa\\data\\cli\\basic_test.kicad_sch")
+ (date "5/2/2023 8:59:03 PM")
+ (tool "Eeschema 7.99.0-893-g4a5939297b-dirty")
+ (sheet (number "1") (name "/") (tstamps "/")
+ (title_block
+ (title "Cli Test")
+ (company "KiCad")
+ (rev "1")
+ (date "2023-04-28")
+ (source "basic_test.kicad_sch")
+ (comment (number "1") (value ""))
+ (comment (number "2") (value ""))
+ (comment (number "3") (value ""))
+ (comment (number "4") (value ""))
+ (comment (number "5") (value ""))
+ (comment (number "6") (value ""))
+ (comment (number "7") (value ""))
+ (comment (number "8") (value ""))
+ (comment (number "9") (value "")))))
+ (components
+ (comp (ref "C1")
+ (value "10u")
+ (footprint "Capacitor_SMD:C_1206_3216Metric")
+ (libsource (lib "Device") (part "C_Small") (description "Unpolarized capacitor, small symbol"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Unpolarized capacitor, small symbol"))
+ (property (name "ki_keywords") (value "capacitor cap"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "8a4f4d93-4e0c-474b-8535-68c4fef6e828"))
+ (comp (ref "J1")
+ (value "Conn_01x01_Pin")
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm")
+ (libsource (lib "Connector") (part "Conn_01x01_Pin") (description "Generic connector, single row, 01x01, script generated"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Generic connector, single row, 01x01, script generated"))
+ (property (name "ki_keywords") (value "connector"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "203ec3c1-122c-4087-8f6d-2a0dd0b941e6"))
+ (comp (ref "J2")
+ (value "Conn_01x01_Pin")
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm")
+ (libsource (lib "Connector") (part "Conn_01x01_Pin") (description "Generic connector, single row, 01x01, script generated"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Generic connector, single row, 01x01, script generated"))
+ (property (name "ki_keywords") (value "connector"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "2a9f5f63-d864-4898-ae3e-539c635e8f2c"))
+ (comp (ref "J3")
+ (value "Conn_01x01_Pin")
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm")
+ (libsource (lib "Connector") (part "Conn_01x01_Pin") (description "Generic connector, single row, 01x01, script generated"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Generic connector, single row, 01x01, script generated"))
+ (property (name "ki_keywords") (value "connector"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "9efa520e-00e1-47a2-b8dc-bf8e2121d065"))
+ (comp (ref "J4")
+ (value "Conn_01x01_Pin")
+ (footprint "TestPoint:TestPoint_Pad_3.0x3.0mm")
+ (libsource (lib "Connector") (part "Conn_01x01_Pin") (description "Generic connector, single row, 01x01, script generated"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Generic connector, single row, 01x01, script generated"))
+ (property (name "ki_keywords") (value "connector"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "789295bb-2cfb-4a2b-977f-b3831d5aa975"))
+ (comp (ref "R1")
+ (value "10k")
+ (footprint "Resistor_SMD:R_1206_3216Metric")
+ (libsource (lib "Device") (part "R_US") (description "Resistor, US symbol"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Resistor, US symbol"))
+ (property (name "ki_keywords") (value "R res resistor"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "eaf8668d-aec7-4209-a3f9-fc7bfb5b931b"))
+ (comp (ref "R2")
+ (value "10k")
+ (footprint "Resistor_SMD:R_1206_3216Metric")
+ (libsource (lib "Device") (part "R_US") (description "Resistor, US symbol"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Resistor, US symbol"))
+ (property (name "ki_keywords") (value "R res resistor"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "8b2eeae5-e1ad-4999-aeb9-01fe06aff8b1"))
+ (comp (ref "R3")
+ (value "10k")
+ (footprint "Resistor_SMD:R_1206_3216Metric")
+ (libsource (lib "Device") (part "R_US") (description "Resistor, US symbol"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Resistor, US symbol"))
+ (property (name "ki_keywords") (value "R res resistor"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "985a669c-9a7f-4b74-bb4f-9487b164d3aa"))
+ (comp (ref "U1")
+ (value "TLV2371DBV")
+ (footprint "Package_TO_SOT_SMD:SOT-23-5")
+ (datasheet "http://www.ti.com/lit/ds/symlink/tlv2375.pdf")
+ (libsource (lib "Amplifier_Operational") (part "TLV2371DBV") (description "Rail-to-Rail Input/Output Operational Amplifier, SOT-23-5"))
+ (property (name "Sheetname") (value ""))
+ (property (name "Sheetfile") (value "basic_test.kicad_sch"))
+ (property (name "ki_description") (value "Rail-to-Rail Input/Output Operational Amplifier, SOT-23-5"))
+ (property (name "ki_keywords") (value "single opamp"))
+ (sheetpath (names "/") (tstamps "/"))
+ (tstamps "b8a40376-5e4f-459f-9886-5e9ee83698cf")))
+ (libparts
+ (libpart (lib "Amplifier_Operational") (part "TLV2371DBV")
+ (description "Rail-to-Rail Input/Output Operational Amplifier, SOT-23-5")
+ (docs "http://www.ti.com/lit/ds/symlink/tlv2375.pdf")
+ (footprints
+ (fp "SOT?23*"))
+ (fields
+ (field (name "Reference") "U")
+ (field (name "Value") "TLV2371DBV")
+ (field (name "Footprint") "Package_TO_SOT_SMD:SOT-23-5")
+ (field (name "Datasheet") "http://www.ti.com/lit/ds/symlink/tlv2375.pdf"))
+ (pins
+ (pin (num "1") (name "") (type "output"))
+ (pin (num "2") (name "V-") (type "power_in"))
+ (pin (num "3") (name "+") (type "input"))
+ (pin (num "4") (name "-") (type "input"))
+ (pin (num "5") (name "V+") (type "power_in"))))
+ (libpart (lib "Connector") (part "Conn_01x01_Pin")
+ (description "Generic connector, single row, 01x01, script generated")
+ (docs "~")
+ (footprints
+ (fp "Connector*:*_1x??_*"))
+ (fields
+ (field (name "Reference") "J")
+ (field (name "Value") "Conn_01x01_Pin")
+ (field (name "Datasheet") "~"))
+ (pins
+ (pin (num "1") (name "Pin_1") (type "passive"))))
+ (libpart (lib "Device") (part "C_Small")
+ (description "Unpolarized capacitor, small symbol")
+ (docs "~")
+ (footprints
+ (fp "C_*"))
+ (fields
+ (field (name "Reference") "C")
+ (field (name "Value") "C_Small")
+ (field (name "Datasheet") "~"))
+ (pins
+ (pin (num "1") (name "") (type "passive"))
+ (pin (num "2") (name "") (type "passive"))))
+ (libpart (lib "Device") (part "R_US")
+ (description "Resistor, US symbol")
+ (docs "~")
+ (footprints
+ (fp "R_*"))
+ (fields
+ (field (name "Reference") "R")
+ (field (name "Value") "R_US")
+ (field (name "Datasheet") "~"))
+ (pins
+ (pin (num "1") (name "") (type "passive"))
+ (pin (num "2") (name "") (type "passive")))))
+ (libraries
+ (library (logical "Amplifier_Operational")
+ (uri "C:\\Program Files\\KiCad\\7.99\\share\\kicad\\symbols/Amplifier_Operational.kicad_sym"))
+ (library (logical "Connector")
+ (uri "C:\\Program Files\\KiCad\\7.99\\share\\kicad\\symbols/Connector.kicad_sym"))
+ (library (logical "Device")
+ (uri "C:\\Program Files\\KiCad\\7.99\\share\\kicad\\symbols/Device.kicad_sym")))
+ (nets
+ (net (code "1") (name "/IN")
+ (node (ref "J2") (pin "1") (pinfunction "Pin_1") (pintype "passive"))
+ (node (ref "R3") (pin "1") (pintype "passive")))
+ (net (code "2") (name "/OUT")
+ (node (ref "J3") (pin "1") (pinfunction "Pin_1") (pintype "passive"))
+ (node (ref "R2") (pin "2") (pintype "passive"))
+ (node (ref "U1") (pin "1") (pintype "output")))
+ (net (code "3") (name "/VCC")
+ (node (ref "J1") (pin "1") (pinfunction "Pin_1") (pintype "passive"))
+ (node (ref "U1") (pin "5") (pinfunction "V+") (pintype "power_in")))
+ (net (code "4") (name "GND")
+ (node (ref "C1") (pin "2") (pintype "passive"))
+ (node (ref "J4") (pin "1") (pinfunction "Pin_1") (pintype "passive"))
+ (node (ref "R1") (pin "1") (pintype "passive"))
+ (node (ref "U1") (pin "2") (pinfunction "V-") (pintype "power_in")))
+ (net (code "5") (name "Net-(U1-+)")
+ (node (ref "C1") (pin "1") (pintype "passive"))
+ (node (ref "R3") (pin "2") (pintype "passive"))
+ (node (ref "U1") (pin "3") (pinfunction "+") (pintype "input")))
+ (net (code "6") (name "Net-(U1--)")
+ (node (ref "R1") (pin "2") (pintype "passive"))
+ (node (ref "R2") (pin "1") (pintype "passive"))
+ (node (ref "U1") (pin "4") (pinfunction "-") (pintype "input")))))
\ No newline at end of file
diff --git a/qa/data/cli/basic_test/basic_test.netlist.kicadxml b/qa/data/cli/basic_test/basic_test.netlist.kicadxml
new file mode 100644
index 0000000000..98670fc650
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.netlist.kicadxml
@@ -0,0 +1,239 @@
+
+
+
+ E:\kicad\kicad\qa\data\cli\basic_test.kicad_sch
+ 5/2/2023 8:59:04 PM
+ Eeschema 7.99.0-893-g4a5939297b-dirty
+
+
+ Cli Test
+ KiCad
+ 1
+ 2023-04-28
+ basic_test.kicad_sch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10u
+ Capacitor_SMD:C_1206_3216Metric
+
+
+
+
+
+
+ 8a4f4d93-4e0c-474b-8535-68c4fef6e828
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 203ec3c1-122c-4087-8f6d-2a0dd0b941e6
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 2a9f5f63-d864-4898-ae3e-539c635e8f2c
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 9efa520e-00e1-47a2-b8dc-bf8e2121d065
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 789295bb-2cfb-4a2b-977f-b3831d5aa975
+
+
+ 10k
+ Resistor_SMD:R_1206_3216Metric
+
+
+
+
+
+
+ eaf8668d-aec7-4209-a3f9-fc7bfb5b931b
+
+
+ 10k
+ Resistor_SMD:R_1206_3216Metric
+
+
+
+
+
+
+ 8b2eeae5-e1ad-4999-aeb9-01fe06aff8b1
+
+
+ 10k
+ Resistor_SMD:R_1206_3216Metric
+
+
+
+
+
+
+ 985a669c-9a7f-4b74-bb4f-9487b164d3aa
+
+
+ TLV2371DBV
+ Package_TO_SOT_SMD:SOT-23-5
+ http://www.ti.com/lit/ds/symlink/tlv2375.pdf
+
+
+
+
+
+
+ b8a40376-5e4f-459f-9886-5e9ee83698cf
+
+
+
+
+ Rail-to-Rail Input/Output Operational Amplifier, SOT-23-5
+ http://www.ti.com/lit/ds/symlink/tlv2375.pdf
+
+ SOT?23*
+
+
+ U
+ TLV2371DBV
+ Package_TO_SOT_SMD:SOT-23-5
+ http://www.ti.com/lit/ds/symlink/tlv2375.pdf
+
+
+
+
+
+
+
+
+
+
+ Generic connector, single row, 01x01, script generated
+ ~
+
+ Connector*:*_1x??_*
+
+
+ J
+ Conn_01x01_Pin
+ ~
+
+
+
+
+
+
+ Unpolarized capacitor, small symbol
+ ~
+
+ C_*
+
+
+ C
+ C_Small
+ ~
+
+
+
+
+
+
+
+ Resistor, US symbol
+ ~
+
+ R_*
+
+
+ R
+ R_US
+ ~
+
+
+
+
+
+
+
+
+
+ C:\Program Files\KiCad\7.99\share\kicad\symbols/Amplifier_Operational.kicad_sym
+
+
+ C:\Program Files\KiCad\7.99\share\kicad\symbols/Connector.kicad_sym
+
+
+ C:\Program Files\KiCad\7.99\share\kicad\symbols/Device.kicad_sym
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qa/data/cli/basic_test/basic_test.netlist.orcadpcb2 b/qa/data/cli/basic_test/basic_test.netlist.orcadpcb2
new file mode 100644
index 0000000000..73bccb7943
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.netlist.orcadpcb2
@@ -0,0 +1,38 @@
+( { EESchema Netlist Version 1.1 created 5/2/2023 8:59:05 PM }
+ ( /eaf8668d-aec7-4209-a3f9-fc7bfb5b931b Resistor_SMD:R_1206_3216Metric R1 10k
+ ( 1 GND )
+ ( 2 Net-(U1--) )
+ )
+ ( /8a4f4d93-4e0c-474b-8535-68c4fef6e828 Capacitor_SMD:C_1206_3216Metric C1 10u
+ ( 1 Net-(U1-+) )
+ ( 2 GND )
+ )
+ ( /8b2eeae5-e1ad-4999-aeb9-01fe06aff8b1 Resistor_SMD:R_1206_3216Metric R2 10k
+ ( 1 Net-(U1--) )
+ ( 2 /OUT )
+ )
+ ( /9efa520e-00e1-47a2-b8dc-bf8e2121d065 TestPoint:TestPoint_Pad_3.0x3.0mm J3 Conn_01x01_Pin
+ ( 1 /OUT )
+ )
+ ( /2a9f5f63-d864-4898-ae3e-539c635e8f2c TestPoint:TestPoint_Pad_3.0x3.0mm J2 Conn_01x01_Pin
+ ( 1 /IN )
+ )
+ ( /203ec3c1-122c-4087-8f6d-2a0dd0b941e6 TestPoint:TestPoint_Pad_3.0x3.0mm J1 Conn_01x01_Pin
+ ( 1 /VCC )
+ )
+ ( /789295bb-2cfb-4a2b-977f-b3831d5aa975 TestPoint:TestPoint_Pad_3.0x3.0mm J4 Conn_01x01_Pin
+ ( 1 GND )
+ )
+ ( /985a669c-9a7f-4b74-bb4f-9487b164d3aa Resistor_SMD:R_1206_3216Metric R3 10k
+ ( 1 /IN )
+ ( 2 Net-(U1-+) )
+ )
+ ( /b8a40376-5e4f-459f-9886-5e9ee83698cf Package_TO_SOT_SMD:SOT-23-5 U1 TLV2371DBV
+ ( 1 /OUT )
+ ( 2 GND )
+ ( 3 Net-(U1-+) )
+ ( 4 Net-(U1--) )
+ ( 5 /VCC )
+ )
+)
+*
diff --git a/qa/data/cli/basic_test/basic_test.pythonbom b/qa/data/cli/basic_test/basic_test.pythonbom
new file mode 100644
index 0000000000..91571a4f31
--- /dev/null
+++ b/qa/data/cli/basic_test/basic_test.pythonbom
@@ -0,0 +1,239 @@
+
+
+
+ E:\kicad\kicad\qa\data\cli\basic_test\basic_test.kicad_sch
+ 5/2/2023 11:18:18 PM
+ Eeschema 7.99.0-893-g4a5939297b-dirty
+
+
+ Cli Test
+ KiCad
+ 1
+ 2023-04-28
+ basic_test.kicad_sch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 10u
+ Capacitor_SMD:C_1206_3216Metric
+
+
+
+
+
+
+ 8a4f4d93-4e0c-474b-8535-68c4fef6e828
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 203ec3c1-122c-4087-8f6d-2a0dd0b941e6
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 2a9f5f63-d864-4898-ae3e-539c635e8f2c
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 9efa520e-00e1-47a2-b8dc-bf8e2121d065
+
+
+ Conn_01x01_Pin
+ TestPoint:TestPoint_Pad_3.0x3.0mm
+
+
+
+
+
+
+ 789295bb-2cfb-4a2b-977f-b3831d5aa975
+
+
+ 10k
+ Resistor_SMD:R_1206_3216Metric
+
+
+
+
+
+
+ eaf8668d-aec7-4209-a3f9-fc7bfb5b931b
+
+
+ 10k
+ Resistor_SMD:R_1206_3216Metric
+
+
+
+
+
+
+ 8b2eeae5-e1ad-4999-aeb9-01fe06aff8b1
+
+
+ 10k
+ Resistor_SMD:R_1206_3216Metric
+
+
+
+
+
+
+ 985a669c-9a7f-4b74-bb4f-9487b164d3aa
+
+
+ TLV2371DBV
+ Package_TO_SOT_SMD:SOT-23-5
+ http://www.ti.com/lit/ds/symlink/tlv2375.pdf
+
+
+
+
+
+
+ b8a40376-5e4f-459f-9886-5e9ee83698cf
+
+
+
+
+ Rail-to-Rail Input/Output Operational Amplifier, SOT-23-5
+ http://www.ti.com/lit/ds/symlink/tlv2375.pdf
+
+ SOT?23*
+
+
+ U
+ TLV2371DBV
+ Package_TO_SOT_SMD:SOT-23-5
+ http://www.ti.com/lit/ds/symlink/tlv2375.pdf
+
+
+
+
+
+
+
+
+
+
+ Generic connector, single row, 01x01, script generated
+ ~
+
+ Connector*:*_1x??_*
+
+
+ J
+ Conn_01x01_Pin
+ ~
+
+
+
+
+
+
+ Unpolarized capacitor, small symbol
+ ~
+
+ C_*
+
+
+ C
+ C_Small
+ ~
+
+
+
+
+
+
+
+ Resistor, US symbol
+ ~
+
+ R_*
+
+
+ R
+ R_US
+ ~
+
+
+
+
+
+
+
+
+
+ C:\Program Files\KiCad\7.99\share\kicad\symbols/Amplifier_Operational.kicad_sym
+
+
+ C:\Program Files\KiCad\7.99\share\kicad\symbols/Connector.kicad_sym
+
+
+ C:\Program Files\KiCad\7.99\share\kicad\symbols/Device.kicad_sym
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qa/data/cli/basic_test/custom_ds.kicad_wks b/qa/data/cli/basic_test/custom_ds.kicad_wks
new file mode 100644
index 0000000000..3f52c70f70
--- /dev/null
+++ b/qa/data/cli/basic_test/custom_ds.kicad_wks
@@ -0,0 +1,46 @@
+(kicad_wks (version 20220228) (generator pl_editor)
+ (setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15)
+ (left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10))
+ (rect (name "") (start 110 34) (end 2 2) (comment "rect around the title block")
+)
+ (rect (name "") (start 0 0 ltcorner) (end 0 0) (repeat 2) (incrx 2) (incry 2))
+ (line (name "") (start 50 2 ltcorner) (end 50 0 ltcorner) (repeat 30) (incrx 50))
+ (tbtext "1" (name "") (pos 25 1 ltcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50))
+ (line (name "") (start 50 2 lbcorner) (end 50 0 lbcorner) (repeat 30) (incrx 50))
+ (tbtext "1" (name "") (pos 25 1 lbcorner) (font (size 1.3 1.3)) (repeat 100) (incrx 50))
+ (line (name "") (start 0 50 ltcorner) (end 2 50 ltcorner) (repeat 30) (incry 50))
+ (tbtext "A" (name "") (pos 1 25 ltcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50))
+ (line (name "") (start 0 50 rtcorner) (end 2 50 rtcorner) (repeat 30) (incry 50))
+ (tbtext "A" (name "") (pos 1 25 rtcorner) (font (size 1.3 1.3)) (justify center) (repeat 100) (incry 50))
+ (tbtext "Date: ${ISSUE_DATE}" (name "") (pos 87 6.9))
+ (line (name "") (start 110 5.5) (end 2 5.5))
+ (tbtext "${KICAD_VERSION}" (name "") (pos 109 4.1) (comment "Kicad version")
+)
+ (line (name "") (start 110 8.5) (end 2 8.5))
+ (tbtext "Rev: ${REVISION}" (name "") (pos 24 6.9) (font bold))
+ (tbtext "Size: ${PAPER}" (name "") (pos 109 6.9) (comment "Paper format name")
+)
+ (tbtext "Id: ${#}/${##}" (name "") (pos 24 4.1) (comment "Sheet id")
+)
+ (line (name "") (start 110 12.5) (end 2 12.5))
+ (tbtext "Title: ${TITLE}" (name "") (pos 109 10.7) (font (size 2 2) bold italic))
+ (tbtext "File: ${FILENAME}" (name "") (pos 109 14.3))
+ (line (name "") (start 110 18.5) (end 2 18.5))
+ (tbtext "Sheet: ${SHEETPATH}" (name "") (pos 109 17))
+ (tbtext "${COMPANY}" (name "") (pos 109 20) (font bold) (comment "Company name")
+)
+ (tbtext "${COMMENT1}" (name "") (pos 109 23) (comment "Comment 0")
+)
+ (tbtext "${COMMENT2}" (name "") (pos 109 26) (comment "Comment 1")
+)
+ (tbtext "${COMMENT3}" (name "") (pos 109 29) (comment "Comment 2")
+)
+ (tbtext "${COMMENT4}" (name "") (pos 109 32) (comment "Comment 3")
+)
+ (line (name "") (start 90 8.5) (end 90 5.5))
+ (line (name "") (start 26 8.5) (end 26 2))
+ (tbtext "CUSTOM DRAWING SHEET" (name "") (pos 79.789 22.8422) (font (size 4 4) bold))
+ (tbtext "CUSTOM DRAWING SHEET" (name "") (pos 274.0992 6.3322) (font (size 4 4) bold))
+ (tbtext "CUSTOM DRAWING SHEET" (name "") (pos 274.0992 184.1322) (font (size 4 4) bold))
+ (tbtext "CUSTOM DRAWING SHEET" (name "") (pos 77.2492 184.1322) (font (size 4 4) bold))
+)
diff --git a/qa/tests/CMakeLists.txt b/qa/tests/CMakeLists.txt
index 688c1199f8..af3ab7f34d 100644
--- a/qa/tests/CMakeLists.txt
+++ b/qa/tests/CMakeLists.txt
@@ -32,15 +32,42 @@ endif()
if( KICAD_TEST_XML_OUTPUT )
# To do this, you will need xmlrunner
- set( PY_TEST_ARGS --xml=${CMAKE_CURRENT_BINARY_DIR}/python.xunit-results )
+ set( PYTEST_ARGS_QAPYTHON --xml=${CMAKE_CURRENT_BINARY_DIR}/qapython.xunit-results )
+ set( PYTEST_ARGS_QACLI --junitxml=${CMAKE_CURRENT_BINARY_DIR}/qacli.junit-results )
endif()
+
+if( MSVC )
+# avoid formatting this otherwise you will introduce whitespace into the PATH string
+ set( QA_PATH_REPLACEMENT
+"PATH=${CMAKE_BINARY_DIR}/kicad/;\
+${CMAKE_BINARY_DIR}/pcbnew/;\
+${CMAKE_BINARY_DIR}/eeschema/;\
+$ENV{PATH};" )
+endif()
+
+
+if( NOT (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug") )
+# qa_python will never work under MSVC + Debug because we only have the Release mode python.exe
+# but the kicad binaries are linked to the debug mode python
# Test that runs the QA tests through scripting
add_test( NAME qa_python
- COMMAND ${PYTHON_EXECUTABLE} test-pcbnewswig.py ${PY_TEST_ARGS}
+ COMMAND ${PYTHON_EXECUTABLE} test-pcbnewswig.py ${PYTEST_ARGS_QAPYTHON}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
-set_property( TEST qa_python
- PROPERTY ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/pcbnew${PYTHON_QA_PATH}"
-)
\ No newline at end of file
+set_tests_properties( qa_python
+ PROPERTIES
+ ENVIRONMENT "${QA_PATH_REPLACEMENT}PYTHONPATH=${CMAKE_BINARY_DIR}/pcbnew;${PYTHON_QA_PATH}"
+)
+endif()
+
+add_test(NAME qa_cli
+ COMMAND ${PYTHON_EXECUTABLE} -m pytest ${CMAKE_CURRENT_SOURCE_DIR}/cli ${PYTEST_ARGS_QACLI}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set_tests_properties( qa_cli
+ PROPERTIES
+ ENVIRONMENT "${QA_PATH_REPLACEMENT};KICAD_RUN_FROM_BUILD_DIR=1;PYTHONPATH=${CMAKE_BINARY_DIR}/pcbnew;${PYTHON_QA_PATH}"
+)
diff --git a/qa/tests/cli/conftest.py b/qa/tests/cli/conftest.py
new file mode 100644
index 0000000000..9a4212b64d
--- /dev/null
+++ b/qa/tests/cli/conftest.py
@@ -0,0 +1,69 @@
+#
+# This program source code file is part of KiCad, a free EDA CAD application.
+#
+# Copyright (C) 2023 Mark Roszko
+# Copyright (C) 2023 KiCad Developers
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+import pytest
+import os
+from pathlib import Path
+
+class KiTestFixture:
+ def __init__( self, config ) -> None:
+ self._junit = False
+ junitxml = config.getoption("xmlpath")
+
+ if junitxml is not None:
+ p = Path( junitxml )
+ p = Path( p.parent ) # get the directory as junitxml points to a file
+ p = p.resolve() # get absolute path
+ self._junit = True
+ else:
+ p = Path.cwd()
+
+ p = p.joinpath('output/')
+
+ self._output_path = p
+
+ def get_output_path( self, sub: str ) -> Path:
+ """Return the calculated output path for test artifacts"""
+
+ output_path = self._output_path.joinpath( sub )
+
+ os.makedirs( str( output_path ), exist_ok=True )
+
+ return output_path
+
+ def get_data_file_path( self, file: str ) -> str:
+ current_dir = os.path.dirname(__file__)
+ base_data_path = os.path.abspath(os.path.join(current_dir, '../../data'))
+
+ return os.path.join(base_data_path, file)
+
+ def add_attachment( self, path: str ) -> None:
+ """Prints the attachment message line for junit reports"""
+
+ if self._junit:
+ print( "[[ATTACHMENT|{}]]".format( path ) )
+
+
+@pytest.fixture
+def kitest( pytestconfig ):
+ kitesthelper = KiTestFixture( pytestconfig )
+ yield kitesthelper
\ No newline at end of file
diff --git a/qa/tests/cli/pytest.ini b/qa/tests/cli/pytest.ini
new file mode 100644
index 0000000000..ac65ad1f40
--- /dev/null
+++ b/qa/tests/cli/pytest.ini
@@ -0,0 +1,5 @@
+[pytest]
+junit_suite_name = cli
+junit_logging = all
+log_cli = true
+log_level = INFO
\ No newline at end of file
diff --git a/qa/tests/cli/test_common.py b/qa/tests/cli/test_common.py
new file mode 100644
index 0000000000..087ad802ce
--- /dev/null
+++ b/qa/tests/cli/test_common.py
@@ -0,0 +1,54 @@
+#
+# This program source code file is part of KiCad, a free EDA CAD application.
+#
+# Copyright (C) 2023 Mark Roszko
+# Copyright (C) 2023 KiCad Developers
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+import pytest
+import utils
+import re
+
+def test_version():
+ command = ["kicad-cli", "version"]
+ stdout, stderr, exitcode = utils.run_and_capture(command)
+ assert exitcode == 0
+ assert re.match("\\d+.\\d+.\\d+", stdout)
+ assert stderr == ''
+
+def test_version_plain():
+ command = ["kicad-cli", "version", "--format=plain"]
+ stdout, stderr, exitcode = utils.run_and_capture(command)
+ assert exitcode == 0
+ assert re.match("\\d+.\\d+.\\d+", stdout)
+ assert stderr == ''
+
+def test_version_commit():
+ command = ["kicad-cli", "version", "--format=commit"]
+ stdout, stderr, exitcode = utils.run_and_capture(command)
+ assert exitcode == 0
+ assert re.match("\\b[0-9a-f]{40}\\b", stdout)
+ assert stderr == ''
+
+def test_help():
+ command = ["kicad-cli", "help"]
+ stdout, stderr, exitcode = utils.run_and_capture(command)
+ assert exitcode == 1
+ assert stdout != ''
+ assert stderr == ''
+
\ No newline at end of file
diff --git a/qa/tests/cli/test_sch.py b/qa/tests/cli/test_sch.py
new file mode 100644
index 0000000000..5277b523f1
--- /dev/null
+++ b/qa/tests/cli/test_sch.py
@@ -0,0 +1,159 @@
+#
+# This program source code file is part of KiCad, a free EDA CAD application.
+#
+# Copyright (C) 2023 Mark Roszko
+# Copyright (C) 2023 KiCad Developers
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+import utils
+import cairosvg
+import re
+import os
+from pathlib import Path
+import pytest
+
+@pytest.mark.parametrize("test_file,output_dir,compare_fn,cli_args",
+ [("cli\\basic_test\\basic_test.kicad_sch", "basic_test", "cli\\basic_test\\basic_test.png", []),
+ ("cli\\basic_test\\basic_test.kicad_sch", "basic_test_nobg_bnw_nods", "cli\\basic_test\\basic_test_nobg_bnw_nods.png", ["--no-background-color", "--exclude-drawing-sheet", "--black-and-white"])
+ ])
+def test_sch_export_svg( kitest,
+ image_diff,
+ test_file: str,
+ output_dir: str,
+ compare_fn: str,
+ cli_args: list):
+ input_file = kitest.get_data_file_path( test_file )
+
+ output_path = kitest.get_output_path( "cli\\{}\\".format( output_dir ) )
+
+ command = ["kicad-cli", "sch", "export", "svg"]
+ command.extend( cli_args )
+ command.append( "-o" )
+ command.append( str( output_path ) )
+ command.append( input_file )
+
+ stdout, stderr, exitcode = utils.run_and_capture( command )
+
+ assert exitcode == 0
+ assert stderr == ''
+
+ stdout_regex = re.match("^Plotted to '(.+)'", stdout)
+ assert stdout_regex
+
+ # now try and manipulate the extracted path
+ output_svg_path = Path( stdout_regex.group(1) )
+ assert output_svg_path.exists()
+
+ kitest.add_attachment( output_svg_path )
+
+ png_converted_from_svg_path = output_svg_path.with_suffix( '.png' )
+
+ compare_file_path = kitest.get_data_file_path( compare_fn )
+
+ cairosvg.svg2png( url=str( output_svg_path ), write_to=str( png_converted_from_svg_path ) )
+
+ assert image_diff( png_converted_from_svg_path, compare_file_path, throw_exception=False )
+
+
+@pytest.mark.parametrize("test_file,output_fn,line_skip_count,cli_args",
+ [("cli\\basic_test\\basic_test.kicad_sch", "basic_test.netlist.kicadsexpr", 5, []),
+ ("cli\\basic_test\\basic_test.kicad_sch", "basic_test.netlist.kicadsexpr", 5, ["--format=kicadsexpr"]),
+ ("cli\\basic_test\\basic_test.kicad_sch", "basic_test.netlist.kicadxml", 6, ["--format=kicadxml"]),
+ ("cli\\basic_test\\basic_test.kicad_sch", "basic_test.netlist.cadstar", 3, ["--format=cadstar"]),
+ ("cli\\basic_test\\basic_test.kicad_sch", "basic_test.netlist.orcadpcb2", 1, ["--format=orcadpcb2"])
+ ])
+def test_sch_export_netlist( kitest,
+ test_file: str,
+ output_fn: str,
+ line_skip_count: int,
+ cli_args: list):
+ input_file = kitest.get_data_file_path( test_file )
+ compare_filepath = kitest.get_data_file_path( "cli\\basic_test\\{}".format( output_fn ) )
+
+ output_filepath = kitest.get_output_path( "cli\\" ).joinpath( output_fn )
+
+ command = ["kicad-cli", "sch", "export", "netlist"]
+ command.extend( cli_args )
+ command.append( "-o" )
+ command.append( str( output_filepath ) )
+ command.append( input_file )
+
+ stdout, stderr, exitcode = utils.run_and_capture( command )
+
+ assert exitcode == 0
+ assert stderr == ''
+
+ assert utils.textdiff_files( compare_filepath, str( output_filepath ), line_skip_count )
+
+ kitest.add_attachment( str( output_filepath ) )
+
+
+@pytest.mark.parametrize("test_file,output_fn,cli_args",
+ [("cli\\basic_test\\basic_test.kicad_sch", "basic_test.pdf", []),
+ ("cli\\basic_test\\basic_test.kicad_sch", "basic_test.bnw.nods.nobg.pdf", ["--black-and-white","--exclude-drawing-sheet","--no-background-color"]),
+ ("cli\\basic_test\\basic_test.kicad_sch", "basic_test.pone.pdf", ["--plot-one"])
+ ])
+def test_sch_export_pdf( kitest,
+ test_file: str,
+ output_fn: str,
+ cli_args: list):
+ input_file = kitest.get_data_file_path( test_file )
+
+ output_filepath = kitest.get_output_path( "cli\\" ).joinpath( output_fn )
+
+ command = ["kicad-cli", "sch", "export", "pdf"]
+ command.extend( cli_args )
+ command.append( "-o" )
+ command.append( str( output_filepath ) )
+ command.append( input_file )
+
+ stdout, stderr, exitcode = utils.run_and_capture( command )
+
+ assert exitcode == 0
+ assert stderr == ''
+
+ kitest.add_attachment( str( output_filepath ) )
+
+
+@pytest.mark.parametrize("test_file,output_fn,line_skip_count,cli_args",
+ [("cli\\basic_test\\basic_test.kicad_sch", "basic_test.pythonbom", 6, [])
+ ])
+def test_sch_export_pythonbom( kitest,
+ test_file: str,
+ output_fn: str,
+ line_skip_count: int,
+ cli_args: list):
+ input_file = kitest.get_data_file_path( test_file )
+ compare_filepath = kitest.get_data_file_path( "cli\\basic_test\\{}".format( output_fn ) )
+
+ output_filepath = kitest.get_output_path( "cli\\" ).joinpath( output_fn )
+
+ command = ["kicad-cli", "sch", "export", "python-bom"]
+ command.extend( cli_args )
+ command.append( "-o" )
+ command.append( str( output_filepath ) )
+ command.append( input_file )
+
+ stdout, stderr, exitcode = utils.run_and_capture( command )
+
+ assert exitcode == 0
+ assert stderr == ''
+
+ assert utils.textdiff_files( compare_filepath, str( output_filepath ), line_skip_count )
+
+ kitest.add_attachment( str( output_filepath ) )
\ No newline at end of file
diff --git a/qa/tests/cli/utils.py b/qa/tests/cli/utils.py
new file mode 100644
index 0000000000..083a9230cf
--- /dev/null
+++ b/qa/tests/cli/utils.py
@@ -0,0 +1,59 @@
+#
+# This program source code file is part of KiCad, a free EDA CAD application.
+#
+# Copyright (C) 2023 Mark Roszko
+# Copyright (C) 2023 KiCad Developers
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+import difflib
+import logging
+import subprocess
+import os
+
+logger = logging.getLogger("cli_util")
+
+def run_and_capture( command: list ) -> tuple[ str, str, int ]:
+ logger.info("Executing command \"%s\"", " ".join( command ))
+
+ proc = subprocess.Popen( command,
+ stdout = subprocess.PIPE,
+ stderr = subprocess.PIPE,
+ encoding = 'utf-8'
+ )
+
+ out,err = proc.communicate()
+
+ return out, err, proc.returncode
+
+def textdiff_files( golden_filepath: str, new_filepath: str, skip: int = 0 ) -> bool:
+ status: bool = True
+
+ with open( golden_filepath, 'r' ) as f:
+ golden_lines = f.readlines()[skip:]
+
+ with open( new_filepath, 'r' ) as f:
+ new_lines = f.readlines()[skip:]
+
+ diff = difflib.unified_diff( golden_lines, new_lines, fromfile = golden_filepath, tofile = new_filepath )
+ diff_text = ''.join(list(diff))
+
+ if diff_text != "":
+ logger.info( "Text diff found:" )
+ logger.info( diff_text )
+
+ return diff_text == ""
\ No newline at end of file
diff --git a/qa/tests/requirements.txt b/qa/tests/requirements.txt
new file mode 100644
index 0000000000..5563e6a79b
--- /dev/null
+++ b/qa/tests/requirements.txt
@@ -0,0 +1,3 @@
+pytest
+cairosvg
+pytest-image-diff
\ No newline at end of file