hermes-agent/tests
dev-lead bbd91bfa23
Some checks failed
Nix / nix (macos-latest) (pull_request) Waiting to run
Contributor Attribution Check / check-attribution (pull_request) Failing after 11s
Supply Chain Audit / Scan PR for critical supply chain risks (pull_request) Successful in 11s
Tests / e2e (pull_request) Successful in 32s
Nix / nix (ubuntu-latest) (pull_request) Failing after 12m25s
Tests / test (pull_request) Failing after 14m46s
test(dockerfile): align tui-resolution assertions with post-a49f4c6 design
Two contract tests in test_dockerfile_pid1_reaping.py guarded properties
of the @hermes/ink materialization dance introduced in 5f215b13 (PR
#16690): ``--prefix node_modules/@hermes/ink`` install + ``omit=dev`` +
nested-react cleanup + ``await import('@hermes/ink')`` smoke check.

That mechanism was retired in a49f4c6 ("fix: prevent tui rebuilding
assets") in favour of a simpler approach:

  1. Copy the full ``ui-tui/packages/hermes-ink/`` tree (not just
     manifests) so npm can resolve the ``file:`` workspace dep against
     real content rather than a bare package.json.
  2. Set ``ENV npm_config_install_links=false`` to force npm to install
     ``file:`` deps as symlinks on Debian's bundled npm 9.x (which
     defaults to ``install-links=true`` and installs as copies). The
     host-side lockfile is generated by npm 10+ using symlinks, so
     install-as-copy produces a hidden node_modules/.package-lock.json
     that permanently disagrees with the root lock on @hermes/ink — and
     that disagreement trips the TUI launcher's
     ``_tui_need_npm_install()`` check on every startup, triggering a
     runtime ``npm install`` that fails with EACCES.

The tests were never updated for the new design; they remained pinned
to the retired materialization step and the manifest-only COPY shape.

This commit:

- Updates ``test_dockerfile_installs_tui_dependencies`` to assert the
  full ``COPY ui-tui/packages/hermes-ink/ ui-tui/packages/hermes-ink/``
  shape — catches a regression that reverts to manifest-only copies.

- Replaces ``test_dockerfile_materializes_local_tui_ink_package`` with
  ``test_dockerfile_forces_npm_install_links_false_for_workspace_resolution``,
  which scans the parsed instruction list for an ENV directive (not a
  comment) setting ``npm_config_install_links=false``. Negative-tested:
  removing only the ENV line correctly fails the assertion even with
  the explanatory comment block above it left intact.

PID-1 reaping tests (the file's primary purpose) are unmodified and
continue to assert tini install + ENTRYPOINT routing.

Partial close hermes-agent#9 — addresses 2 of the ~28 real failures
surfaced after the disk-pressure fix; does not touch the other ~19+
unrelated test failures in that issue.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 13:44:51 -07:00
..
acp fix(compression): include system prompt + tool schemas in token estimates (#18265) 2026-04-30 23:03:54 -07:00
acp_adapter fix(acp): run /steer as a regular prompt on idle sessions (#18258) 2026-04-30 22:45:14 -07:00
agent fix(auxiliary): propagate explicit_api_key to _try_openrouter() 2026-05-02 02:27:49 -07:00
cli fix(compression): include system prompt + tool schemas in token estimates (#18265) 2026-04-30 23:03:54 -07:00
cron fix(curator): rewrite cron job skill refs after consolidation (#18253) 2026-04-30 23:04:50 -07:00
e2e fix(gateway): coerce plaintext "restart gateway" DMs to /restart 2026-04-28 01:40:28 -07:00
environments/benchmarks
fakes
gateway fix(gateway): tighten httpx keepalive and close whatsapp typing-response leak (#18451) 2026-05-02 02:23:37 -07:00
hermes_cli fix(gateway): shutdown + restart hygiene (drain timeout, false-fatal, success log) (#18761) 2026-05-02 02:08:06 -07:00
hermes_state fix(resume): redirect --resume to the descendant that actually holds the messages 2026-04-24 03:04:42 -07:00
honcho_plugin feat(honcho): explain why when honcho_profile returns an empty card 2026-04-27 12:37:33 -07:00
integration
openviking_plugin fix(openviking): pre-check fs/stat to route file URIs before hitting directory-only endpoints 2026-04-30 02:35:29 -07:00
plugins feat(kanban): durable multi-profile collaboration board (#17805) 2026-04-30 13:36:47 -07:00
run_agent fix(agent): try fallback providers at init when primary credential pool is exhausted (#17929) 2026-05-02 02:09:46 -07:00
skills test(openclaw-migration): cover alias reverse-lookup for real OpenClaw schema 2026-04-28 04:58:13 -07:00
stress feat(kanban): durable multi-profile collaboration board (#17805) 2026-04-30 13:36:47 -07:00
tools test(dockerfile): align tui-resolution assertions with post-a49f4c6 design 2026-05-08 13:44:51 -07:00
tui_gateway fix(plugins): await async handlers in CLI and TUI dispatch 2026-04-30 19:56:18 -07:00
website fix(website): auto-wrap ASCII-art code blocks in generated skill pages (#16497) 2026-04-27 03:38:39 -07:00
__init__.py
conftest.py fix(ci): stabilize main test suite regressions (#17660) 2026-04-29 23:18:55 -07:00
run_interrupt_test.py
test_account_usage.py
test_atomic_replace_symlinks.py refactor: consolidate symlink-safe atomic replace into shared helper 2026-04-28 04:58:22 -07:00
test_base_url_hostname.py
test_batch_runner_checkpoint.py test: regression coverage for checkpoint dedup and inf/nan coercion 2026-04-24 14:32:21 -07:00
test_cli_file_drop.py
test_cli_manual_compress.py test(cli): regression test for manual /compress system_message 2026-04-28 05:21:49 -07:00
test_cli_skin_integration.py fix(ci): stabilize main test suite regressions (#17660) 2026-04-29 23:18:55 -07:00
test_ctx_halving_fix.py
test_empty_model_fallback.py
test_evidence_store.py
test_get_tool_definitions_cache_isolation.py fix(tools): isolate get_tool_definitions quiet_mode cache + dedup LCM injection (#17335) 2026-04-30 04:32:06 -07:00
test_hermes_constants.py
test_hermes_home_profile_warning.py fix(constants): warn once when get_hermes_home() falls back under an active profile (#18746) 2026-05-02 01:49:55 -07:00
test_hermes_logging.py fix(logging): attach gateway log after cli init 2026-04-26 19:01:26 -07:00
test_hermes_state.py fix(state): include finish_reason in conversation replay 2026-04-30 20:40:28 -07:00
test_honcho_client_config.py
test_install_sh_setup_wizard_tty_probe.py fix(install): widen /dev/tty open-probe to sibling gates (#16746) 2026-04-28 06:45:55 -07:00
test_ipv4_preference.py
test_mcp_serve.py
test_mini_swe_runner.py
test_minimax_model_validation.py
test_minimax_oauth.py test(cli): cover minimax-oauth resolution, refresh, menu wiring 2026-04-29 09:53:42 -07:00
test_minisweagent_path.py
test_model_picker_scroll.py
test_model_tools_async_bridge.py fix(model_tools): cancel coroutine on timeout so worker thread exits + log full traceback 2026-04-29 05:00:40 -07:00
test_model_tools.py fix(plugins): stop firing pre_tool_call hook twice per tool execution (#17611) 2026-04-29 12:43:39 -07:00
test_ollama_num_ctx.py
test_packaging_metadata.py
test_plugin_skills.py
test_project_metadata.py
test_retry_utils.py
test_sql_injection.py
test_subprocess_home_isolation.py
test_timezone.py
test_toolset_distributions.py
test_toolsets.py feat(discord): split discord_server into discord + discord_admin tools 2026-04-25 04:50:14 -07:00
test_trajectory_compressor_async.py
test_trajectory_compressor.py
test_transform_tool_result_hook.py
test_tui_gateway_server.py fix(approval): harden YOLO mode env parsing against quoted-bool strings 2026-04-30 20:37:37 -07:00
test_utils_truthy_values.py
test_yuanbao_integration.py yuanbao platform (#16298) 2026-04-26 18:50:49 -07:00
test_yuanbao_markdown.py yuanbao platform (#16298) 2026-04-26 18:50:49 -07:00
test_yuanbao_pipeline.py yuanbao platform (#16298) 2026-04-26 18:50:49 -07:00
test_yuanbao_proto.py yuanbao platform (#16298) 2026-04-26 18:50:49 -07:00