Skip to content

Commit 0a9e959

Browse files
codexByron
authored andcommitted
test: preserve hidden gitfiles when preparing submodule aliases
The Windows Python 3.8 partial CI log showed two failures in `test_submodule_allows_existing_metadata_symlinks`: preparing update and move aliases raised `PermissionError` before invoking GitPython. Git marks the submodule's `.git` file hidden; Python's `write_text()` attempts to recreate it, which Windows rejects for an existing hidden file. Open that fixture file with `r+`, write the replacement target, and truncate it. This preserves the hidden attribute while replacing the full contents. The separate fixture that creates a previously absent gitfile is unchanged. Validation: all six native/windows37 update, move, and remove alias modes pass locally. Ruff lint, formatting, and `git diff --check` pass. The Windows-specific file-attribute behavior will be verified by CI.
1 parent 216c706 commit 0a9e959

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

‎test/test_submodule.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,11 @@ def test_submodule_allows_existing_metadata_symlinks(
715715
target = tmp_path / "outside"
716716
if kind == "alias":
717717
target = modules / "nested"
718-
(root / "module/.git").write_text("gitdir: ../.git/modules/alias/module")
718+
# Git hides .git on Windows; opening that existing file with O_CREAT
719+
# fails even when it is writable. Preserve its attributes with r+.
720+
with (root / "module/.git").open("r+", encoding="utf-8") as gitfile:
721+
gitfile.write("gitdir: ../.git/modules/alias/module")
722+
gitfile.truncate()
719723
else:
720724
link.rename(target)
721725
link.symlink_to(target, target_is_directory=target.is_dir())

0 commit comments

Comments
 (0)