2
2
# This module is part of GitPython and is released under
3
3
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
4
4
import os
5
+ import shutil
5
6
import sys
6
7
from unittest import skipIf
7
8
@@ -660,6 +661,24 @@ def test_add_empty_repo(self, rwdir):
660
661
url = empty_repo_dir , no_checkout = checkout_mode and True or False )
661
662
# end for each checkout mode
662
663
664
+ @with_rw_directory
665
+ def test_list_only_valid_submodules (self , rwdir ):
666
+ repo_path = osp .join (rwdir , 'parent' )
667
+ repo = git .Repo .init (repo_path )
668
+ repo .git .submodule ('add' , self ._small_repo_url (), 'module' )
669
+ repo .index .commit ("add submodule" )
670
+
671
+ assert len (repo .submodules ) == 1
672
+
673
+ # Delete the directory from submodule
674
+ submodule_path = osp .join (repo_path , 'module' )
675
+ shutil .rmtree (submodule_path )
676
+ repo .git .add ([submodule_path ])
677
+ repo .index .commit ("remove submodule" )
678
+
679
+ repo = git .Repo (repo_path )
680
+ assert len (repo .submodules ) == 0
681
+
663
682
@skipIf (HIDE_WINDOWS_KNOWN_ERRORS ,
664
683
"""FIXME on cygwin: File "C:\\ projects\\ gitpython\\ git\\ cmd.py", line 671, in execute
665
684
raise GitCommandError(command, status, stderr_value, stdout_value)
0 commit comments