@ -66,6 +66,7 @@ import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository ;
import org.eclipse.jgit.lib.RepositoryTestCase ;
import org.eclipse.jgit.revwalk.RevCommit ;
import org.eclipse.jgit.storage.file.FileBasedConfig ;
import org.junit.Test ;
/ * *
@ -212,4 +213,44 @@ public class SubmoduleAddTest extends RepositoryTestCase {
assertTrue ( status . getAdded ( ) . contains ( Constants . DOT_GIT_MODULES ) ) ;
assertTrue ( status . getAdded ( ) . contains ( path ) ) ;
}
@Test
public void addSubmoduleWithExistingSubmoduleDefined ( ) throws Exception {
String path1 = "sub1" ;
String url1 = "git://server/repo1.git" ;
String path2 = "sub2" ;
FileBasedConfig modulesConfig = new FileBasedConfig ( new File (
db . getWorkTree ( ) , Constants . DOT_GIT_MODULES ) , db . getFS ( ) ) ;
modulesConfig . setString ( ConfigConstants . CONFIG_SUBMODULE_SECTION ,
path1 , ConfigConstants . CONFIG_KEY_PATH , path1 ) ;
modulesConfig . setString ( ConfigConstants . CONFIG_SUBMODULE_SECTION ,
path1 , ConfigConstants . CONFIG_KEY_URL , url1 ) ;
modulesConfig . save ( ) ;
Git git = new Git ( db ) ;
writeTrashFile ( "file.txt" , "content" ) ;
git . add ( ) . addFilepattern ( "file.txt" ) . call ( ) ;
assertNotNull ( git . commit ( ) . setMessage ( "create file" ) . call ( ) ) ;
SubmoduleAddCommand command = new SubmoduleAddCommand ( db ) ;
command . setPath ( path2 ) ;
String url2 = db . getDirectory ( ) . toURI ( ) . toString ( ) ;
command . setURI ( url2 ) ;
assertNotNull ( command . call ( ) ) ;
modulesConfig . load ( ) ;
assertEquals ( path1 , modulesConfig . getString (
ConfigConstants . CONFIG_SUBMODULE_SECTION , path1 ,
ConfigConstants . CONFIG_KEY_PATH ) ) ;
assertEquals ( url1 , modulesConfig . getString (
ConfigConstants . CONFIG_SUBMODULE_SECTION , path1 ,
ConfigConstants . CONFIG_KEY_URL ) ) ;
assertEquals ( path2 , modulesConfig . getString (
ConfigConstants . CONFIG_SUBMODULE_SECTION , path2 ,
ConfigConstants . CONFIG_KEY_PATH ) ) ;
assertEquals ( url2 , modulesConfig . getString (
ConfigConstants . CONFIG_SUBMODULE_SECTION , path2 ,
ConfigConstants . CONFIG_KEY_URL ) ) ;
}
}