ComfyUI/tests-unit/assets_test
Matt Miller dc6190e8ba
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
Python Linting / Run Pylint (push) Has been cancelled
Build package / Build Test (3.10) (push) Has been cancelled
Build package / Build Test (3.11) (push) Has been cancelled
Build package / Build Test (3.12) (push) Has been cancelled
Build package / Build Test (3.13) (push) Has been cancelled
Build package / Build Test (3.14) (push) Has been cancelled
fix(assets): seed added_at past max(existing) to survive Windows clock collisions
The per-tag microsecond stagger preserves intra-batch order, but two
back-to-back write batches on the same reference (e.g.
set_reference_tags for path tags, then add_tags_to_reference for user
tags) call get_utc_now() independently. On Windows the system clock can
return the same datetime for both calls if no OS tick elapsed between
the commits — both batches end up sharing microseconds and
ORDER BY added_at, tag_name falls back to the alphabetic tiebreaker,
sorting user tags ahead of path tags they were meant to follow.

Add _next_added_at_base(reference_id) that reads max(existing added_at)
and returns max(existing + 1us, get_utc_now()), guaranteeing the new
batch sorts strictly after anything previously written for that
reference. Used by set_reference_tags and add_tags_to_reference;
batch_insert_seed_assets stays on raw get_utc_now() since seed inserts
are always the first writes for a new reference.

The accompanying regression test pins get_utc_now() to a frozen value
so the previously-Windows-only race becomes a platform-independent
failure mode under test.
2026-05-20 20:33:39 -07:00
..
queries fix(assets): seed added_at past max(existing) to survive Windows clock collisions 2026-05-20 20:33:39 -07:00
services fix(assets): expand standalone bucket tag for nested category paths 2026-05-20 20:33:39 -07:00
conftest.py refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
helpers.py refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
test_assets_missing_sync.py feat(assets): collapse nested asset path into a single slash-joined tag 2026-05-19 14:48:49 -07:00
test_crud.py feat(assets): collapse nested asset path into a single slash-joined tag 2026-05-19 14:48:49 -07:00
test_downloads.py refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
test_file_utils.py refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
test_helpers.py fix(assets): expand standalone bucket tag for nested category paths 2026-05-20 20:33:39 -07:00
test_list_filter.py refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
test_metadata_filters.py Assets Part 2 - add more endpoints (#12125) 2026-01-31 02:22:05 -05:00
test_prune_orphaned_assets.py feat(assets): collapse nested asset path into a single slash-joined tag 2026-05-19 14:48:49 -07:00
test_sync_references.py refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
test_tags_api.py refactor(assets): modular architecture + async two-phase scanner & background seeder (#12621) 2026-03-07 20:37:25 -05:00
test_uploads.py feat(assets): align local API with cloud spec (#12863) 2026-03-16 12:34:04 -07:00
test_user_tag_http_smoke.py fix(assets): expand standalone bucket tag for nested category paths 2026-05-20 20:33:39 -07:00