60 lines
1.8 KiB
Rust
60 lines
1.8 KiB
Rust
use rustbot::config::parse_str;
|
|
|
|
#[test]
|
|
fn flat_config_is_a_single_network() {
|
|
let cfgs = parse_str("server = irc.example.org\nnick = flatbot\nchannels = #a #b\n");
|
|
assert_eq!(cfgs.len(), 1);
|
|
assert_eq!(cfgs[0].server, "irc.example.org");
|
|
assert_eq!(cfgs[0].nick, "flatbot");
|
|
assert_eq!(cfgs[0].channels, vec!["#a", "#b"]);
|
|
assert_eq!(cfgs[0].name, "irc.example.org");
|
|
}
|
|
|
|
#[test]
|
|
fn sections_inherit_top_level_defaults_and_override() {
|
|
let cfgs = parse_str(
|
|
"nick = shared\nchannels = #lobby\n\
|
|
[libera]\nserver = irc.libera.chat\ntls = true\n\
|
|
[oftc]\nserver = irc.oftc.net\nnick = other\nchannels = #oftc\n",
|
|
);
|
|
assert_eq!(cfgs.len(), 2);
|
|
|
|
let libera = &cfgs[0];
|
|
assert_eq!(libera.name, "libera");
|
|
assert_eq!(libera.server, "irc.libera.chat");
|
|
assert_eq!(libera.nick, "shared");
|
|
assert_eq!(libera.channels, vec!["#lobby"]);
|
|
assert!(libera.tls);
|
|
assert_eq!(libera.port, 6697);
|
|
|
|
let oftc = &cfgs[1];
|
|
assert_eq!(oftc.name, "oftc");
|
|
assert_eq!(oftc.server, "irc.oftc.net");
|
|
assert_eq!(oftc.nick, "other");
|
|
assert_eq!(oftc.channels, vec!["#oftc"]);
|
|
assert!(!oftc.tls);
|
|
}
|
|
|
|
#[test]
|
|
fn a_section_may_rename_itself() {
|
|
let cfgs = parse_str("[net]\nname = pretty\nserver = irc.example.org\n");
|
|
assert_eq!(cfgs.len(), 1);
|
|
assert_eq!(cfgs[0].name, "pretty");
|
|
}
|
|
|
|
#[test]
|
|
fn comments_and_blanks_are_ignored() {
|
|
let cfgs = parse_str("# comment\n; also\n\n \n");
|
|
assert_eq!(cfgs.len(), 1);
|
|
assert_eq!(cfgs[0].server, "irc.tchatou.fr");
|
|
}
|
|
|
|
#[test]
|
|
fn admin_list_is_parsed_and_inherited() {
|
|
let cfgs = parse_str("admin = reverse, alice\nwebchat = https://w/\n[net]\nserver = x\n");
|
|
assert_eq!(
|
|
cfgs[0].admin,
|
|
vec!["reverse".to_string(), "alice".to_string()]
|
|
);
|
|
assert_eq!(cfgs[0].webchat, "https://w/");
|
|
}
|