Skip to content

Commit

Permalink
Merge pull request #1767 from EliahKagan/312-gc
Browse files Browse the repository at this point in the history
Replace xfail with gc.collect in TestSubmodule.test_rename
  • Loading branch information
Byron committed Dec 12, 2023
2 parents 37e234a + b66be7c commit 3ac7e78
Showing 1 changed file with 6 additions and 12 deletions.
18 changes: 6 additions & 12 deletions test/test_submodule.py
Original file line number Diff line number Diff line change
Expand Up @@ -948,18 +948,6 @@ def test_remove_norefs(self, rwdir):
sm.remove()
assert not sm.exists()

@pytest.mark.xfail(
os.name == "nt" and sys.version_info >= (3, 12),
reason=(
"The sm.move call fails. Submodule.move calls os.renames, which raises:\n"
"PermissionError: [WinError 32] "
"The process cannot access the file because it is being used by another process: "
R"'C:\Users\ek\AppData\Local\Temp\test_renamekkbznwjp\parent\mymodules\myname' "
R"-> 'C:\Users\ek\AppData\Local\Temp\test_renamekkbznwjp\parent\renamed\myname'"
"\nThis resembles other Windows errors, but only occurs starting in Python 3.12."
),
raises=PermissionError,
)
@with_rw_directory
def test_rename(self, rwdir):
parent = git.Repo.init(osp.join(rwdir, "parent"))
Expand All @@ -970,6 +958,12 @@ def test_rename(self, rwdir):
assert sm.rename(sm_name) is sm and sm.name == sm_name
assert not sm.repo.is_dirty(index=True, working_tree=False, untracked_files=False)

# This is needed to work around a PermissionError on Windows, resembling others,
# except new in Python 3.12. (*Maybe* this could be due to changes in CPython's
# garbage collector detailed in https://github.com/python/cpython/issues/97922.)
if os.name == "nt" and sys.version_info >= (3, 12):
gc.collect()

new_path = "renamed/myname"
assert sm.move(new_path).name == new_path

Expand Down

0 comments on commit 3ac7e78

Please sign in to comment.