ComfyUI/tests-unit
Simon Pinfold 39e9db11e8 feat(execution): attach media metadata to output entries in executed/history payloads (#15417)
* feat(execution): attach media metadata to output entries

Enrich file-type output entries with a nested metadata object
({kind, width, height} for images, plus {duration, fps, frame_count}
for videos) at output-processing time, reusing the extractors from the
asset system's media_metadata service. Unlike asset-id enrichment this
is not gated on --enable-assets: the properties flow into the executed
websocket message and /history for every consumer, including ones
without the assets system enabled.

The path containment guard moves to media_enrichment.py and is shared
with asset_enrichment.py.

* fix(execution): harden output-entry media enrichment per review

- Resolve symlinks (realpath on base and candidate) before the
  containment check, so a symlink planted inside output/ can't smuggle
  an outside target past commonpath; also covers output dirs that are
  themselves symlinks. Applies to both enrichers via the shared helper.
- Validate filename/subfolder/type are strings before path resolution
  so a malformed entry skips cleanly instead of raising TypeError.
- Broaden the lazy-import guard beyond ImportError: the enrichment is
  called unguarded on the output path and must degrade to a no-op when
  a dependency fails to import for any reason.
- Tests: real-filesystem symlink escape/containment, non-string fields,
  non-ImportError import failure.
2026-08-14 20:55:10 -04:00
..
app_test feat(api): expose registered extension filters on /experiment/models (#14797) 2026-07-09 12:59:30 -07:00
assets_test feat(assets): extract video metadata into system_metadata on ingest and scan 2026-08-14 20:55:10 -04:00
comfy_api_nodes_test [Partner Nodes] fix(ByteDance): encode stereo reference audio without doubling its duration (#15177) 2026-07-31 21:57:45 +03:00
comfy_api_test Store mp4 metadata at the beginning of the file when possible. (#15195) 2026-08-01 03:21:28 -04:00
comfy_extras_test Fix PreviewAny escaping non-ASCII text in dict and list previews (#15513) 2026-08-11 23:42:35 -07:00
comfy_quant Support convrot int4 models. (#14859) 2026-07-09 18:57:09 -04:00
comfy_test Fix Generate Text ignoring thinking=false on Gemma4 E2B/E4B (#15278) 2026-08-12 22:44:14 -04:00
execution_test feat(execution): attach media metadata to output entries in executed/history payloads (#15417) 2026-08-14 20:55:10 -04:00
folder_paths_test feat(security): add System User protection with `__` prefix (#10966) 2025-11-28 21:28:42 -05:00
jobs_cancel_test Add jobs-namespace cancel endpoints (POST /api/jobs/{job_id}/cancel, POST /api/jobs/cancel) (#14493) 2026-06-19 16:39:35 -07:00
prompt_server_test fix: return millisecond timestamps from get_file_info() (#12996) 2026-05-06 10:56:09 +08:00
security_test Fix SVG previews broken by the stored-XSS forced-download (#15149) 2026-07-29 23:29:36 -07:00
seeder_test feat(assets): register output files as assets after prompt execution (#12812) 2026-03-24 20:48:55 -07:00
server/utils Remove unused GET /files API endpoint (#6714) 2025-02-05 18:48:36 -05:00
server_test fix: use no-store cache headers to prevent stale frontend chunks (#12911) 2026-03-14 18:25:09 -04:00
utils Normalize extra_model_config.yaml paths to prevent duplicates. (#6885) 2025-02-20 07:09:45 -05:00
README.md Minor: update tests-unit README.md (#4896) 2024-09-12 04:53:08 -04:00
deploy_environment_test.py Add deploy environment header (Comfy-Env) to partner node API calls (#13425) 2026-05-04 20:17:56 -07:00
feature_flags_test.py feat: allow --comfy-api-base target ephemeral testenvs (#14569) 2026-07-08 23:20:10 -07:00
requirements.txt refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
websocket_feature_flags_test.py feat(assets): add namespaced model_type tags and align tag semantics (#14511) 2026-07-08 22:00:08 -07:00

README.md

Pytest Unit Tests

Install test dependencies

pip install -r tests-unit/requirements.txt

Run tests

pytest tests-unit/