mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-30 06:41:51 +00:00
Six days after #23937 (608 fixes) the codebase had accumulated 241 new PLR6201 violations. Same mechanical `x in (...)` → `x in {...}` fix, same zero-risk profile: set lookup is O(1) vs O(n) for tuple and the two are semantically equivalent for hashable scalar membership tests. All 241 instances fixed via `ruff check --select PLR6201 --fix --unsafe-fixes`, zero remaining. Every changed value is a hashable scalar (str/int/None/enum/signal); no risk of unhashable runtime errors. No behavior change. Test plan: - 119 files changed, +244/-244 (net zero) — exactly one-line edits - `ruff check` clean afterward - Compile checks pass on the largest touched files (cli.py, run_agent.py, gateway/run.py, gateway/platforms/discord.py, model_tools.py) - Subset broad test run on tests/gateway/ tests/hermes_cli/ tests/agent/ tests/tools/: 18187 passed, 59 pre-existing failures (verified against origin/main with the same shape — identical failure count, identical category — all xdist test-order flakes unrelated to this change) Follows the same template as PR #23937 ([tracker: #23972](https://github.com/NousResearch/hermes-agent/issues/23972)). |
||
|---|---|---|
| .. | ||
| conftest.py | ||
| pytest.ini | ||
| README.md | ||
| test_check_deps.py | ||
| test_cloud_integration.py | ||
| test_common.py | ||
| test_extract_schema.py | ||
| test_run_workflow.py | ||
ComfyUI Skill Tests
Pytest suite covering the skill's scripts. Pure-stdlib unit tests run without any setup; cloud integration tests need a Comfy Cloud API key.
Running
# Unit tests only (no network required) — runs in <1s
python3 -m pytest tests/ -c tests/pytest.ini -o addopts="-p no:xdist"
# Including cloud integration tests
COMFY_CLOUD_API_KEY="comfyui-..." python3 -m pytest tests/ \
-c tests/pytest.ini -o addopts="-p no:xdist"
# Just cloud tests
COMFY_CLOUD_API_KEY="comfyui-..." python3 -m pytest tests/test_cloud_integration.py \
-c tests/pytest.ini -o addopts="-p no:xdist" -v
The -c and -o overrides isolate this suite from any parent
pyproject.toml pytest config (e.g. the -n auto from a parent repo).
Test files
| File | Coverage |
|---|---|
test_common.py |
Cloud detection, URL routing, format validation, embeddings, paths, seeds, model-list parsing, folder aliases |
test_extract_schema.py |
Connection tracing, positive/negative prompt detection, dedup logic, embedding deps |
test_run_workflow.py |
Param injection (incl. -1 seed, link refusal), output download walk, runner construction |
test_check_deps.py |
Model-name fuzzy matching, install command suggestions |
test_cloud_integration.py |
Live cloud API contract tests (auto-skipped without API key) |
Adding tests
When you change a script:
- Add a unit test if the change is pure logic (cloud detection, parsing, etc.)
- Add a cloud integration test if the change depends on cloud API behavior
(use
pytestmark = pytest.mark.cloudso it auto-skips without a key) - Workflow fixtures live in
conftest.py(sd15_workflow,flux_workflow,video_workflow)
Why the explicit -c / -o?
The parent hermes-agent repo's pyproject.toml enables pytest-xdist by
default (-n auto). This suite is small enough that parallelism isn't
worth the complexity, and pytest-xdist isn't always installed in the user's
environment. The -c tests/pytest.ini -o addopts="-p no:xdist" flags make
the suite run identically regardless of the parent project's config.