Say which connections were not routed
freeroute exited 0 and said nothing when it dropped connections, which cost real diagnosis time: on rc4 two simple two-pin nets came back with no copper and no explanation. The grid now records each connection it could not route, the exact check adds each it rejects, and the CLI lists them on stderr (the SES is still written; the exit code stays 0, as the JAR's). A connection whose ends both sit in one zone of its net is listed apart, as left to the zone fill: freeroute does not route through a zone it cannot trust to be solid, but KiCad's fill often joins those pads anyway.
This commit is contained in:
@@ -148,3 +148,19 @@ def test_a_pour_other_nets_can_cross_is_not_trusted_to_connect():
|
||||
result, _, _ = route_dsn_board_exact(dsn)
|
||||
net = next(iter(result.routed_net_numbers))
|
||||
assert result.result.wires.get(net) # P1 and P2 got a track between them
|
||||
|
||||
|
||||
def test_cli_names_the_connections_it_could_not_route(tmp_path, capsys):
|
||||
# a keepout wall across the board on both layers: A and B cannot be joined
|
||||
from freeroute.cli import main
|
||||
|
||||
wall = " ".join(
|
||||
f"(keepout \"wall\" (polygon {layer} 0 9000 1000 11000 1000 11000 -21000 9000 -21000))"
|
||||
for layer in ("F.Cu", "B.Cu")
|
||||
)
|
||||
dsn = tmp_path / "wall.dsn"
|
||||
dsn.write_text(_dsn("(component P (place A 4000 -10000 front 0) (place B 16000 -10000 front 0))",
|
||||
"(net N (pins A-1 B-1))", wall))
|
||||
assert main([str(dsn), "--engine", "exact", "-do", str(tmp_path / "out.ses")]) == 0
|
||||
err = capsys.readouterr().err
|
||||
assert "1 connection(s) not routed" in err and "N: A-1 to B-1" in err
|
||||
|
||||
Reference in New Issue
Block a user