From 7c3c7e50c5a76a18bc52a0c51af5b674fbfacd7c Mon Sep 17 00:00:00 2001 From: pefontana Date: Wed, 15 Apr 2026 16:28:31 -0300 Subject: [PATCH] test(delegate): make default_toolsets regression test robust to user config The prior form of this test asserted on CLI_CONFIG["delegation"] after importing cli, which only passed by accident of pytest-xdist worker scheduling. cli._hermes_home is frozen at module import time (cli.py:76), before the tests/conftest.py autouse HERMES_HOME-isolation fixture can fire, so CLI_CONFIG ends up populated by deep-merging the contributor's actual ~/.hermes/config.yaml over the defaults (cli.py:359-366). Any contributor (like me) who still has the legacy key set in their own config causes a false failure the moment another test file in the same xdist worker imports cli at module level. Asserting on the source of load_cli_config() instead sidesteps all of that: the test now checks the defaults literal directly and is independent of user config, HERMES_HOME, import order, and worker scheduling. Demonstrated failure mode before this fix: pytest tests/hermes_cli/test_config_drift.py \ tests/hermes_cli/test_skills_hub.py -o addopts="" -> FAILED (CLI_CONFIG["delegation"] contained "default_toolsets" from the user's ~/.hermes/config.yaml) Part of Initiative 2 / M0.5. --- tests/hermes_cli/test_config_drift.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/tests/hermes_cli/test_config_drift.py b/tests/hermes_cli/test_config_drift.py index 4b49c58b..deabb813 100644 --- a/tests/hermes_cli/test_config_drift.py +++ b/tests/hermes_cli/test_config_drift.py @@ -5,6 +5,8 @@ documented or declared at some point but never actually wired up to read code. Future dead-config regressions can accumulate here. """ +import inspect + def test_delegation_default_toolsets_removed_from_cli_config(): """delegation.default_toolsets was dead config — never read by @@ -13,13 +15,22 @@ def test_delegation_default_toolsets_removed_from_cli_config(): Guards against accidental re-introduction in cli.py's CLI_CONFIG default dict. If this test fails, someone re-added the key without wiring it up to _load_config() in tools/delegate_tool.py. - """ - from cli import CLI_CONFIG - delegation_cfg = CLI_CONFIG.get("delegation", {}) - assert "default_toolsets" not in delegation_cfg, ( - "delegation.default_toolsets was removed in M0.5 because it was " - "never read. Do not re-add it; use tools/delegate_tool.py's " - "DEFAULT_TOOLSETS module constant or wire a new config key through " - "_load_config()." + We inspect the source of load_cli_config() instead of asserting on the + runtime CLI_CONFIG dict because CLI_CONFIG is populated by deep-merging + the user's ~/.hermes/config.yaml over the defaults (cli.py:359-366). + A contributor who still has the legacy key set in their own config + would cause a false failure, and HERMES_HOME patching via conftest + doesn't help because cli._hermes_home is frozen at module import time + (cli.py:76) — before any autouse fixture can fire. Source inspection + sidesteps all of that: it tests the defaults literal directly. + """ + from cli import load_cli_config + + source = inspect.getsource(load_cli_config) + assert '"default_toolsets"' not in source, ( + "delegation.default_toolsets was removed because it was never read. " + "Do not re-add it to cli.py's CLI_CONFIG default dict; " + "use tools/delegate_tool.py's DEFAULT_TOOLSETS module constant or " + "wire a new config key through _load_config()." )