Add BrokerPort: loopd asks brokerd for every tool call
Implemented-By: OpenCode session (model recorded in docs/implementer-log.md)
This commit is contained in:
@@ -224,3 +224,49 @@ fn unknown_keys_are_errors_in_the_m2b_tables_too() {
|
||||
"a partial table keeps the other defaults"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn the_broker_table_is_optional_and_its_socket_has_no_default() {
|
||||
let c = Config::load(&fixture("minimal.toml")).unwrap();
|
||||
assert_eq!(
|
||||
c.broker.socket, None,
|
||||
"no socket means no broker, never a guessed path"
|
||||
);
|
||||
assert_eq!(c.broker.timeout_ms, 120_000);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn the_broker_table_can_be_set_and_rejects_unknown_keys() {
|
||||
let base = std::fs::read_to_string(fixture("m2b.toml")).unwrap();
|
||||
let text = format!(
|
||||
"{base}\n[broker]\nsocket = \"/run/boxmaker/loop-broker/broker.sock\"\ntimeout_ms = 5000\n"
|
||||
);
|
||||
let c = Config::parse(&text).unwrap();
|
||||
assert_eq!(
|
||||
c.broker.socket,
|
||||
Some(PathBuf::from("/run/boxmaker/loop-broker/broker.sock"))
|
||||
);
|
||||
assert_eq!(c.broker.timeout_ms, 5000);
|
||||
|
||||
let only_timeout = format!("{base}\n[broker]\ntimeout_ms = 5000\n");
|
||||
let c = Config::parse(&only_timeout).unwrap();
|
||||
assert_eq!((c.broker.socket, c.broker.timeout_ms), (None, 5000));
|
||||
|
||||
let only_socket = format!("{base}\n[broker]\nsocket = \"/b.sock\"\n");
|
||||
let c = Config::parse(&only_socket).unwrap();
|
||||
assert_eq!(
|
||||
c.broker.timeout_ms, 120_000,
|
||||
"a partial table keeps the default"
|
||||
);
|
||||
|
||||
for bad in [
|
||||
"zz_unknown = 1",
|
||||
"timeout = 5000",
|
||||
"timeout_ms = -1",
|
||||
"timeout_ms = \"5s\"",
|
||||
"socket = 7",
|
||||
] {
|
||||
let text = format!("{base}\n[broker]\n{bad}\n");
|
||||
assert!(Config::parse(&text).is_err(), "[broker] accepted `{bad}`");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user