@@ -948,18 +948,6 @@ def test_remove_norefs(self, rwdir):
948
948
sm .remove ()
949
949
assert not sm .exists ()
950
950
951
- @pytest .mark .xfail (
952
- os .name == "nt" and sys .version_info >= (3 , 12 ),
953
- reason = (
954
- "The sm.move call fails. Submodule.move calls os.renames, which raises:\n "
955
- "PermissionError: [WinError 32] "
956
- "The process cannot access the file because it is being used by another process: "
957
- R"'C:\Users\ek\AppData\Local\Temp\test_renamekkbznwjp\parent\mymodules\myname' "
958
- R"-> 'C:\Users\ek\AppData\Local\Temp\test_renamekkbznwjp\parent\renamed\myname'"
959
- "\n This resembles other Windows errors, but only occurs starting in Python 3.12."
960
- ),
961
- raises = PermissionError ,
962
- )
963
951
@with_rw_directory
964
952
def test_rename (self , rwdir ):
965
953
parent = git .Repo .init (osp .join (rwdir , "parent" ))
@@ -970,6 +958,12 @@ def test_rename(self, rwdir):
970
958
assert sm .rename (sm_name ) is sm and sm .name == sm_name
971
959
assert not sm .repo .is_dirty (index = True , working_tree = False , untracked_files = False )
972
960
961
+ # This is needed to work around a PermissionError on Windows, resembling others,
962
+ # except new in Python 3.12. (*Maybe* this could be due to changes in CPython's
963
+ # garbage collector detailed in https://github.com/python/cpython/issues/97922.)
964
+ if os .name == "nt" and sys .version_info >= (3 , 12 ):
965
+ gc .collect ()
966
+
973
967
new_path = "renamed/myname"
974
968
assert sm .move (new_path ).name == new_path
975
969
0 commit comments