@@ -317,8 +317,8 @@ def _do_base_tests(self, rwrepo):
317317 # forcibly delete the child repository
318318 prev_count = len (sm .children ())
319319 self .failUnlessRaises (ValueError , csm .remove , force = True )
320- # We removed sm, which removed all submodules. Howver , the instance we have
321- # still points to the commit prior to that, where it still existed
320+ # We removed sm, which removed all submodules. However , the instance we
321+ # have still points to the commit prior to that, where it still existed
322322 csm .set_parent_commit (csm .repo .commit (), check = False )
323323 assert not csm .exists ()
324324 assert not csm .module_exists ()
@@ -801,6 +801,31 @@ def assert_exists(sm, value=True):
801801 assert os .path .isdir (sm_module_path ) == dry_run
802802 # end for each dry-run mode
803803
804+ @with_rw_directory
805+ def test_remove_norefs (self , rwdir ):
806+ parent = git .Repo .init (os .path .join (rwdir , 'parent' ))
807+ sm_name = 'mymodules/myname'
808+ sm = parent .create_submodule (sm_name , sm_name , url = self ._small_repo_url ())
809+ parent .index .commit ("Added submodule" )
810+
811+ # Adding a remote without fetching so would have no references
812+ sm .repo .create_remote ('special' , 'git@server-shouldnotmatter:repo.git' )
813+ assert sm .rename (sm_name ) is sm and sm .name == sm_name
814+ assert not sm .repo .is_dirty (index = True , working_tree = False , untracked_files = False )
815+
816+ new_path = 'renamed/myname'
817+ assert sm .move (new_path ).name == new_path
818+
819+ new_sm_name = "shortname"
820+ assert sm .rename (new_sm_name ) is sm
821+ assert sm .repo .is_dirty (index = True , working_tree = False , untracked_files = False )
822+ assert sm .exists ()
823+
824+ sm_mod = sm .module ()
825+ if os .path .isfile (os .path .join (sm_mod .working_tree_dir , '.git' )) == sm ._need_gitfile_submodules (parent .git ):
826+ assert sm_mod .git_dir .endswith (join_path_native ('.git' , 'modules' , new_sm_name ))
827+ # end
828+
804829 @with_rw_directory
805830 def test_rename (self , rwdir ):
806831 parent = git .Repo .init (os .path .join (rwdir , 'parent' ))
0 commit comments