diff options
Diffstat (limited to 'src/modules/username.rs')
-rw-r--r-- | src/modules/username.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/modules/username.rs b/src/modules/username.rs index 038bbd757..714eec07e 100644 --- a/src/modules/username.rs +++ b/src/modules/username.rs @@ -40,6 +40,10 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> { return None; // [A] } + if let Some(&alias) = config.aliases.get(&username) { + username = alias.to_string(); + } + let parsed = StringFormatter::new(config.format).and_then(|formatter| { formatter .map_style(|variable| match variable { @@ -323,4 +327,40 @@ mod tests { assert_eq!(expected, actual.as_deref()); } + + #[test] + fn test_alias() { + let actual = ModuleRenderer::new("username") + .env(super::USERNAME_ENV_VAR, "astronaut") + .config(toml::toml! { + [username] + show_always = true + aliases = { "astronaut" = "skywalker" } + + style_root = "" + style_user = "" + }) + .collect(); + let expected = Some("skywalker in "); + + assert_eq!(expected, actual.as_deref()); + } + + #[test] + fn test_alias_emoji() { + let actual = ModuleRenderer::new("username") + .env(super::USERNAME_ENV_VAR, "kaas") + .config(toml::toml! { + [username] + show_always = true + aliases = { "a" = "b", "kaas" = "🧀" } + + style_root = "" + style_user = "" + }) + .collect(); + let expected = Some("🧀 in "); + + assert_eq!(expected, actual.as_deref()); + } } |