@@ -948,18 +948,6 @@ def test_remove_norefs(self, rwdir):
948948 sm .remove ()
949949 assert not sm .exists ()
950950
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- )
963951 @with_rw_directory
964952 def test_rename (self , rwdir ):
965953 parent = git .Repo .init (osp .join (rwdir , "parent" ))
@@ -970,6 +958,12 @@ def test_rename(self, rwdir):
970958 assert sm .rename (sm_name ) is sm and sm .name == sm_name
971959 assert not sm .repo .is_dirty (index = True , working_tree = False , untracked_files = False )
972960
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+
973967 new_path = "renamed/myname"
974968 assert sm .move (new_path ).name == new_path
975969
0 commit comments