From 981fe83ca2e23474255f4cacc4da2814f9de0744 Mon Sep 17 00:00:00 2001 From: JJ Liebig Date: Sun, 13 Sep 2026 19:58:43 +0400 Subject: fix: keep hermes enabled list valid yaml (#4056) * fix: keep hermes enabled list valid yaml refs #3839 * fix: preserve hermes inline list quoting and comments refs #3839 --- src/integration/tests.rs | 77 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'src/integration/tests.rs') diff --git a/src/integration/tests.rs b/src/integration/tests.rs index 41a4e027..eb310637 100644 --- a/src/integration/tests.rs +++ b/src/integration/tests.rs @@ -2703,6 +2703,59 @@ fn install_hermes_converts_flow_plugin_list_to_block_list() { let _ = fs::remove_dir_all(base); } +#[test] +fn install_hermes_converts_inline_enabled_list_to_block_list() { + let config = update_hermes_enabled_plugin("plugins:\n enabled: [example-plugin]\n", true); + assert_eq!( + config, + "plugins:\n enabled:\n - herdr-agent-state\n - example-plugin\n" + ); +} + +#[test] +fn install_hermes_preserves_quoted_inline_enabled_items() { + let config = + update_hermes_enabled_plugin("plugins:\n enabled: [\"null\", 'foo: bar']\n", true); + assert_eq!( + config, + "plugins:\n enabled:\n - herdr-agent-state\n - \"null\"\n - 'foo: bar'\n" + ); +} + +#[test] +fn install_hermes_preserves_inline_enabled_comment() { + let config = update_hermes_enabled_plugin( + "plugins:\n enabled: [example-plugin] # managed locally\n", + true, + ); + assert_eq!( + config, + "plugins:\n enabled: # managed locally\n - herdr-agent-state\n - example-plugin\n" + ); +} + +#[test] +fn install_hermes_preserves_inline_plugins_comment() { + let config = + update_hermes_enabled_plugin("plugins: [platforms/discord] # managed locally\n", true); + assert_eq!( + config, + "plugins: # managed locally\n - herdr-agent-state\n - platforms/discord\n" + ); +} + +#[test] +fn install_hermes_is_idempotent_for_inline_enabled_list_entry() { + let config = update_hermes_enabled_plugin( + "plugins:\n enabled: [herdr-agent-state, example-plugin]\n", + true, + ); + assert_eq!( + config, + "plugins:\n enabled: [herdr-agent-state, example-plugin]\n" + ); +} + #[test] fn install_hermes_is_idempotent_for_quoted_flat_plugin_entry() { let _lock = integration_env_lock(); @@ -2824,6 +2877,30 @@ fn uninstall_hermes_removes_flow_plugin_list_entry() { let _ = fs::remove_dir_all(base); } +#[test] +fn uninstall_hermes_removes_inline_enabled_list_entry() { + let config = update_hermes_enabled_plugin( + "plugins:\n enabled: [example-plugin, herdr-agent-state]\n", + false, + ); + assert_eq!(config, "plugins:\n enabled:\n - example-plugin\n"); +} + +#[test] +fn uninstall_hermes_preserves_quoted_inline_enabled_items() { + let config = update_hermes_enabled_plugin( + "plugins:\n enabled: ['foo: bar', herdr-agent-state]\n", + false, + ); + assert_eq!(config, "plugins:\n enabled:\n - 'foo: bar'\n"); +} + +#[test] +fn uninstall_hermes_converts_single_inline_enabled_entry_to_empty_list() { + let config = update_hermes_enabled_plugin("plugins:\n enabled: [herdr-agent-state]\n", false); + assert_eq!(config, "plugins:\n enabled: []\n"); +} + #[test] fn uninstall_hermes_removes_commented_flat_plugin_entry() { let _lock = integration_env_lock(); -- cgit v1.2.3