hermes-agent/skills/creative/comfyui/tests
kshitij 5fba236644
chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355)
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)).
2026-05-17 02:29:41 -07:00
..
conftest.py fix(skills/comfyui): bug fixes, cloud parity, expanded coverage, examples, tests 2026-04-29 20:48:01 -07:00
pytest.ini fix(skills/comfyui): bug fixes, cloud parity, expanded coverage, examples, tests 2026-04-29 20:48:01 -07:00
README.md fix(skills/comfyui): bug fixes, cloud parity, expanded coverage, examples, tests 2026-04-29 20:48:01 -07:00
test_check_deps.py fix(skills/comfyui): correct hallucinated node names and registry slugs 2026-04-29 20:48:01 -07:00
test_cloud_integration.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_common.py fix(skills/comfyui): bug fixes, cloud parity, expanded coverage, examples, tests 2026-04-29 20:48:01 -07:00
test_extract_schema.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_run_workflow.py fix(skills/comfyui): bug fixes, cloud parity, expanded coverage, examples, tests 2026-04-29 20:48:01 -07:00

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:

  1. Add a unit test if the change is pure logic (cloud detection, parsing, etc.)
  2. Add a cloud integration test if the change depends on cloud API behavior (use pytestmark = pytest.mark.cloud so it auto-skips without a key)
  3. 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.