Skip to content

Fold tracked keys only where the file system does - #793

Merged
SimonCropp merged 1 commit into
mainfrom
fix-tracked-keys-linux-case
Aug 22, 2026
Merged

Fold tracked keys only where the file system does#793
SimonCropp merged 1 commit into
mainfrom
fix-tracked-keys-linux-case

Conversation

@SimonCropp

Copy link
Copy Markdown
Member

TrackedKeys lower-cased the path unconditionally. InlineKey folds only on
Windows and macOS, and carries the reason: on Linux two paths differing only in
case are two files, and giving them one key means the second takes over the
first's entry.

Tracked moves and deletes ride the same listing and had the opposite rule. On
Linux two received files differing only in case - value=a and value=A from one
parameterised test - shared a move key, and ViewerSession.EnqueueTracked keeps
one entry per key, so the earlier pending file was dropped without a word.

Both now go through InlineKey.FoldPath, so there is one answer to "when are two
paths one file" rather than two that disagree.

The tests assert the two agree rather than asserting a platform's answer, so
they hold wherever they run - but they can only fail on Linux, where the two
rules differ. The Ubuntu job is what enforces this; it passes on Windows either
way.

TrackedKeys lower-cased the path unconditionally. InlineKey folds only on
Windows and macOS, and carries the reason: on Linux two paths differing only in
case are two files, and giving them one key means the second takes over the
first's entry.

Tracked moves and deletes ride the same listing and had the opposite rule. On
Linux two received files differing only in case - value=a and value=A from one
parameterised test - shared a move key, and ViewerSession.EnqueueTracked keeps
one entry per key, so the earlier pending file was dropped without a word.

Both now go through InlineKey.FoldPath, so there is one answer to "when are two
paths one file" rather than two that disagree.

The tests assert the two agree rather than asserting a platform's answer, so
they hold wherever they run - but they can only fail on Linux, where the two
rules differ. The Ubuntu job is what enforces this; it passes on Windows either
way.
@SimonCropp
SimonCropp merged commit 6ea7a24 into main Aug 22, 2026
8 of 9 checks passed
@SimonCropp
SimonCropp deleted the fix-tracked-keys-linux-case branch August 22, 2026 00:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant