You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test fixture test/packages/fake-uv/src is a committed symlink that breaks on an unprivileged Windows checkout #21850
test/packages/fake-uv/src is committed as a symlink (git mode 120000) pointing to ../../../python/. It is the only symlink in the repository.
On Windows, a user without elevation or Developer Mode has core.symlinks=false, so git checkout writes that entry out as a regular text file containing the target path (../../../python/) rather than as a link.
The fake-uv package is then malformed: its src is a one-line text file instead of a source tree. crates/uv/tests/python/python_module.rs installs fake-uv as uv==0.1.0 in roughly 14 cases, so those tests fail locally for such a contributor.
Why CI does not catch it
The workflows under .github/workflows/ run Windows heavily (ci.yml, build-release-binaries.yml, and others), but GitHub's Windows runners can create symlinks, so the fixture materialises correctly there.
The breakage is therefore invisible in CI and shows up only in an unprivileged Windows contributor's local checkout — where it is usually read as a misconfigured machine rather than a repository issue, and never reported.
Reproduce
On Windows, non-elevated, Developer Mode off (git config core.symlinks returns false):
git clone https://github.com/astral-sh/uv
type test\packages\fake-uv\src
Prints ../../../python/ — a text file, not a directory.
Possible fixes
Listing options rather than assuming one; the fix is a fixture or Rust change and the approach is yours to pick.
Materialise the fixture link at test setup instead of committing it: create the symlink in Rust, and skip or fall back to a copy if creation fails on Windows.
Replace the committed symlink with the real files, or generate it in a small build step.
At minimum, document the requirement (Developer Mode, or git config --global core.symlinks true) in CONTRIBUTING.md, so contributors are not left guessing.
Happy to put up a PR for whichever direction you prefer.
Environment
Windows 11 (10.0.26200), non-elevated, Developer Mode off, git core.symlinks=false
uv at HEAD (test/packages/fake-uv/src confirmed still mode 120000, target ../../../python/)
Activity
Materialize fake-uv without checkout symlinks (#21855)