Fix tests on windows by closing repos
Without explicitly closing repos we can't delete the test repositories on windows. Change-Id: Id5fa17bd764cbf28703c2f21639d7e969289c2d6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
1a054f1229
commit
da595f093e
|
@ -441,10 +441,10 @@ public void testCloneRepositoryWithNestedSubmodules() throws Exception {
|
||||||
SubmoduleWalk walk = SubmoduleWalk.forIndex(git2.getRepository());
|
SubmoduleWalk walk = SubmoduleWalk.forIndex(git2.getRepository());
|
||||||
assertTrue(walk.next());
|
assertTrue(walk.next());
|
||||||
Repository clonedSub1 = walk.getRepository();
|
Repository clonedSub1 = walk.getRepository();
|
||||||
addRepoToClose(clonedSub1);
|
|
||||||
assertNotNull(clonedSub1);
|
assertNotNull(clonedSub1);
|
||||||
status = new SubmoduleStatusCommand(clonedSub1);
|
status = new SubmoduleStatusCommand(clonedSub1);
|
||||||
statuses = status.call();
|
statuses = status.call();
|
||||||
|
clonedSub1.close();
|
||||||
pathStatus = statuses.get(path);
|
pathStatus = statuses.get(path);
|
||||||
assertNotNull(pathStatus);
|
assertNotNull(pathStatus);
|
||||||
assertEquals(SubmoduleStatusType.INITIALIZED, pathStatus.getType());
|
assertEquals(SubmoduleStatusType.INITIALIZED, pathStatus.getType());
|
||||||
|
|
|
@ -205,8 +205,8 @@ public void commitNewSubmodule() throws Exception {
|
||||||
assertEquals(path, generator.getModulesPath());
|
assertEquals(path, generator.getModulesPath());
|
||||||
assertEquals(uri, generator.getConfigUrl());
|
assertEquals(uri, generator.getConfigUrl());
|
||||||
Repository subModRepo = generator.getRepository();
|
Repository subModRepo = generator.getRepository();
|
||||||
addRepoToClose(subModRepo);
|
|
||||||
assertNotNull(subModRepo);
|
assertNotNull(subModRepo);
|
||||||
|
subModRepo.close();
|
||||||
assertEquals(commit, repo.resolve(Constants.HEAD));
|
assertEquals(commit, repo.resolve(Constants.HEAD));
|
||||||
|
|
||||||
RevCommit submoduleCommit = git.commit().setMessage("submodule add")
|
RevCommit submoduleCommit = git.commit().setMessage("submodule add")
|
||||||
|
@ -253,8 +253,8 @@ public void commitSubmoduleUpdate() throws Exception {
|
||||||
assertEquals(path, generator.getModulesPath());
|
assertEquals(path, generator.getModulesPath());
|
||||||
assertEquals(uri, generator.getConfigUrl());
|
assertEquals(uri, generator.getConfigUrl());
|
||||||
Repository subModRepo = generator.getRepository();
|
Repository subModRepo = generator.getRepository();
|
||||||
addRepoToClose(subModRepo);
|
|
||||||
assertNotNull(subModRepo);
|
assertNotNull(subModRepo);
|
||||||
|
subModRepo.close();
|
||||||
assertEquals(commit2, repo.resolve(Constants.HEAD));
|
assertEquals(commit2, repo.resolve(Constants.HEAD));
|
||||||
|
|
||||||
RevCommit submoduleAddCommit = git.commit().setMessage("submodule add")
|
RevCommit submoduleAddCommit = git.commit().setMessage("submodule add")
|
||||||
|
|
|
@ -90,24 +90,28 @@ public void setUp() throws Exception {
|
||||||
JGitTestUtil.writeTrashFile(defaultDb, "hello.txt", "master world");
|
JGitTestUtil.writeTrashFile(defaultDb, "hello.txt", "master world");
|
||||||
git.add().addFilepattern("hello.txt").call();
|
git.add().addFilepattern("hello.txt").call();
|
||||||
git.commit().setMessage("Second commit").call();
|
git.commit().setMessage("Second commit").call();
|
||||||
|
addRepoToClose(defaultDb);
|
||||||
|
|
||||||
notDefaultDb = createWorkRepository();
|
notDefaultDb = createWorkRepository();
|
||||||
git = new Git(notDefaultDb);
|
git = new Git(notDefaultDb);
|
||||||
JGitTestUtil.writeTrashFile(notDefaultDb, "world.txt", "hello");
|
JGitTestUtil.writeTrashFile(notDefaultDb, "world.txt", "hello");
|
||||||
git.add().addFilepattern("world.txt").call();
|
git.add().addFilepattern("world.txt").call();
|
||||||
git.commit().setMessage("Initial commit").call();
|
git.commit().setMessage("Initial commit").call();
|
||||||
|
addRepoToClose(notDefaultDb);
|
||||||
|
|
||||||
groupADb = createWorkRepository();
|
groupADb = createWorkRepository();
|
||||||
git = new Git(groupADb);
|
git = new Git(groupADb);
|
||||||
JGitTestUtil.writeTrashFile(groupADb, "a.txt", "world");
|
JGitTestUtil.writeTrashFile(groupADb, "a.txt", "world");
|
||||||
git.add().addFilepattern("a.txt").call();
|
git.add().addFilepattern("a.txt").call();
|
||||||
git.commit().setMessage("Initial commit").call();
|
git.commit().setMessage("Initial commit").call();
|
||||||
|
addRepoToClose(groupADb);
|
||||||
|
|
||||||
groupBDb = createWorkRepository();
|
groupBDb = createWorkRepository();
|
||||||
git = new Git(groupBDb);
|
git = new Git(groupBDb);
|
||||||
JGitTestUtil.writeTrashFile(groupBDb, "b.txt", "world");
|
JGitTestUtil.writeTrashFile(groupBDb, "b.txt", "world");
|
||||||
git.add().addFilepattern("b.txt").call();
|
git.add().addFilepattern("b.txt").call();
|
||||||
git.commit().setMessage("Initial commit").call();
|
git.commit().setMessage("Initial commit").call();
|
||||||
|
addRepoToClose(groupBDb);
|
||||||
|
|
||||||
resolveRelativeUris();
|
resolveRelativeUris();
|
||||||
}
|
}
|
||||||
|
@ -239,45 +243,47 @@ public void testRepoManifestCopyFile() throws Exception {
|
||||||
public void testBareRepo() throws Exception {
|
public void testBareRepo() throws Exception {
|
||||||
Repository remoteDb = createBareRepository();
|
Repository remoteDb = createBareRepository();
|
||||||
Repository tempDb = createWorkRepository();
|
Repository tempDb = createWorkRepository();
|
||||||
StringBuilder xmlContent = new StringBuilder();
|
try {
|
||||||
xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
StringBuilder xmlContent = new StringBuilder();
|
||||||
.append("<manifest>")
|
xmlContent
|
||||||
.append("<remote name=\"remote1\" fetch=\".\" />")
|
.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
||||||
.append("<default revision=\"master\" remote=\"remote1\" />")
|
.append("<manifest>")
|
||||||
.append("<project path=\"foo\" name=\"")
|
.append("<remote name=\"remote1\" fetch=\".\" />")
|
||||||
.append(defaultUri)
|
.append("<default revision=\"master\" remote=\"remote1\" />")
|
||||||
.append("\" />")
|
.append("<project path=\"foo\" name=\"").append(defaultUri)
|
||||||
.append("</manifest>");
|
.append("\" />").append("</manifest>");
|
||||||
JGitTestUtil.writeTrashFile(
|
JGitTestUtil.writeTrashFile(tempDb, "manifest.xml",
|
||||||
tempDb, "manifest.xml", xmlContent.toString());
|
xmlContent.toString());
|
||||||
RepoCommand command = new RepoCommand(remoteDb);
|
RepoCommand command = new RepoCommand(remoteDb);
|
||||||
command
|
command.setPath(
|
||||||
.setPath(tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
||||||
.setURI(rootUri)
|
.setURI(rootUri).call();
|
||||||
.call();
|
// Clone it
|
||||||
// Clone it
|
File directory = createTempDirectory("testBareRepo");
|
||||||
File directory = createTempDirectory("testBareRepo");
|
Repository localDb = Git.cloneRepository().setDirectory(directory)
|
||||||
Repository localDb = Git
|
.setURI(remoteDb.getDirectory().toURI().toString()).call()
|
||||||
.cloneRepository()
|
.getRepository();
|
||||||
.setDirectory(directory)
|
// The .gitmodules file should exist
|
||||||
.setURI(remoteDb.getDirectory().toURI().toString())
|
File gitmodules = new File(localDb.getWorkTree(), ".gitmodules");
|
||||||
.call()
|
assertTrue("The .gitmodules file should exist", gitmodules.exists());
|
||||||
.getRepository();
|
// The first line of .gitmodules file should be expected
|
||||||
// The .gitmodules file should exist
|
BufferedReader reader = new BufferedReader(new FileReader(
|
||||||
File gitmodules = new File(localDb.getWorkTree(), ".gitmodules");
|
gitmodules));
|
||||||
assertTrue("The .gitmodules file should exist", gitmodules.exists());
|
String content = reader.readLine();
|
||||||
// The first line of .gitmodules file should be expected
|
reader.close();
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(gitmodules));
|
assertEquals(
|
||||||
String content = reader.readLine();
|
"The first line of .gitmodules file should be as expected",
|
||||||
reader.close();
|
"[submodule \"foo\"]", content);
|
||||||
assertEquals(
|
// The gitlink should be the same as remote head sha1
|
||||||
"The first line of .gitmodules file should be as expected",
|
String gitlink = localDb.resolve(Constants.HEAD + ":foo").name();
|
||||||
"[submodule \"foo\"]", content);
|
localDb.close();
|
||||||
// The gitlink should be the same as remote head sha1
|
String remote = defaultDb.resolve(Constants.HEAD).name();
|
||||||
String gitlink = localDb.resolve(Constants.HEAD + ":foo").name();
|
assertEquals("The gitlink should be the same as remote head",
|
||||||
String remote = defaultDb.resolve(Constants.HEAD).name();
|
remote, gitlink);
|
||||||
assertEquals("The gitlink should be the same as remote head",
|
} finally {
|
||||||
remote, gitlink);
|
tempDb.close();
|
||||||
|
remoteDb.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -362,213 +368,213 @@ public void testRevisionTag() throws Exception {
|
||||||
public void testRevisionBare() throws Exception {
|
public void testRevisionBare() throws Exception {
|
||||||
Repository remoteDb = createBareRepository();
|
Repository remoteDb = createBareRepository();
|
||||||
Repository tempDb = createWorkRepository();
|
Repository tempDb = createWorkRepository();
|
||||||
StringBuilder xmlContent = new StringBuilder();
|
try {
|
||||||
xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
StringBuilder xmlContent = new StringBuilder();
|
||||||
.append("<manifest>")
|
xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
||||||
.append("<remote name=\"remote1\" fetch=\".\" />")
|
.append("<manifest>")
|
||||||
.append("<default revision=\"")
|
.append("<remote name=\"remote1\" fetch=\".\" />")
|
||||||
.append(BRANCH)
|
.append("<default revision=\"").append(BRANCH)
|
||||||
.append("\" remote=\"remote1\" />")
|
.append("\" remote=\"remote1\" />")
|
||||||
.append("<project path=\"foo\" name=\"")
|
.append("<project path=\"foo\" name=\"").append(defaultUri)
|
||||||
.append(defaultUri)
|
.append("\" />").append("</manifest>");
|
||||||
.append("\" />")
|
JGitTestUtil.writeTrashFile(tempDb, "manifest.xml",
|
||||||
.append("</manifest>");
|
xmlContent.toString());
|
||||||
JGitTestUtil.writeTrashFile(
|
RepoCommand command = new RepoCommand(remoteDb);
|
||||||
tempDb, "manifest.xml", xmlContent.toString());
|
command.setPath(
|
||||||
RepoCommand command = new RepoCommand(remoteDb);
|
tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
||||||
command
|
.setURI(rootUri).call();
|
||||||
.setPath(tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
// Clone it
|
||||||
.setURI(rootUri)
|
File directory = createTempDirectory("testRevisionBare");
|
||||||
.call();
|
Repository localDb = Git.cloneRepository().setDirectory(directory)
|
||||||
// Clone it
|
.setURI(remoteDb.getDirectory().toURI().toString()).call()
|
||||||
File directory = createTempDirectory("testRevisionBare");
|
.getRepository();
|
||||||
Repository localDb = Git
|
// The gitlink should be the same as oldCommitId
|
||||||
.cloneRepository()
|
String gitlink = localDb.resolve(Constants.HEAD + ":foo").name();
|
||||||
.setDirectory(directory)
|
localDb.close();
|
||||||
.setURI(remoteDb.getDirectory().toURI().toString())
|
assertEquals("The gitlink is same as remote head",
|
||||||
.call()
|
oldCommitId.name(), gitlink);
|
||||||
.getRepository();
|
} finally {
|
||||||
// The gitlink should be the same as oldCommitId
|
tempDb.close();
|
||||||
String gitlink = localDb.resolve(Constants.HEAD + ":foo").name();
|
remoteDb.close();
|
||||||
assertEquals("The gitlink is same as remote head",
|
}
|
||||||
oldCommitId.name(), gitlink);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCopyFileBare() throws Exception {
|
public void testCopyFileBare() throws Exception {
|
||||||
Repository remoteDb = createBareRepository();
|
Repository remoteDb = createBareRepository();
|
||||||
Repository tempDb = createWorkRepository();
|
Repository tempDb = createWorkRepository();
|
||||||
StringBuilder xmlContent = new StringBuilder();
|
try {
|
||||||
xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
StringBuilder xmlContent = new StringBuilder();
|
||||||
.append("<manifest>")
|
xmlContent
|
||||||
.append("<remote name=\"remote1\" fetch=\".\" />")
|
.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
||||||
.append("<default revision=\"master\" remote=\"remote1\" />")
|
.append("<manifest>")
|
||||||
.append("<project path=\"foo\" name=\"")
|
.append("<remote name=\"remote1\" fetch=\".\" />")
|
||||||
.append(defaultUri)
|
.append("<default revision=\"master\" remote=\"remote1\" />")
|
||||||
.append("\" revision=\"")
|
.append("<project path=\"foo\" name=\"").append(defaultUri)
|
||||||
.append(BRANCH)
|
.append("\" revision=\"").append(BRANCH).append("\" >")
|
||||||
.append("\" >")
|
.append("<copyfile src=\"hello.txt\" dest=\"Hello\" />")
|
||||||
.append("<copyfile src=\"hello.txt\" dest=\"Hello\" />")
|
.append("</project>").append("</manifest>");
|
||||||
.append("</project>")
|
JGitTestUtil.writeTrashFile(tempDb, "manifest.xml",
|
||||||
.append("</manifest>");
|
xmlContent.toString());
|
||||||
JGitTestUtil.writeTrashFile(
|
RepoCommand command = new RepoCommand(remoteDb);
|
||||||
tempDb, "manifest.xml", xmlContent.toString());
|
command.setPath(
|
||||||
RepoCommand command = new RepoCommand(remoteDb);
|
tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
||||||
command
|
.setURI(rootUri).call();
|
||||||
.setPath(tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
// Clone it
|
||||||
.setURI(rootUri)
|
File directory = createTempDirectory("testCopyFileBare");
|
||||||
.call();
|
Repository localDb = Git.cloneRepository().setDirectory(directory)
|
||||||
// Clone it
|
.setURI(remoteDb.getDirectory().toURI().toString()).call()
|
||||||
File directory = createTempDirectory("testCopyFileBare");
|
.getRepository();
|
||||||
Repository localDb = Git
|
// The Hello file should exist
|
||||||
.cloneRepository()
|
File hello = new File(localDb.getWorkTree(), "Hello");
|
||||||
.setDirectory(directory)
|
localDb.close();
|
||||||
.setURI(remoteDb.getDirectory().toURI().toString())
|
assertTrue("The Hello file should exist", hello.exists());
|
||||||
.call()
|
// The content of Hello file should be expected
|
||||||
.getRepository();
|
BufferedReader reader = new BufferedReader(new FileReader(hello));
|
||||||
// The Hello file should exist
|
String content = reader.readLine();
|
||||||
File hello = new File(localDb.getWorkTree(), "Hello");
|
reader.close();
|
||||||
assertTrue("The Hello file should exist", hello.exists());
|
assertEquals("The Hello file should have expected content",
|
||||||
// The content of Hello file should be expected
|
"branch world", content);
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(hello));
|
} finally {
|
||||||
String content = reader.readLine();
|
tempDb.close();
|
||||||
reader.close();
|
remoteDb.close();
|
||||||
assertEquals("The Hello file should have expected content",
|
}
|
||||||
"branch world", content);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testReplaceManifestBare() throws Exception {
|
public void testReplaceManifestBare() throws Exception {
|
||||||
Repository remoteDb = createBareRepository();
|
Repository remoteDb = createBareRepository();
|
||||||
Repository tempDb = createWorkRepository();
|
Repository tempDb = createWorkRepository();
|
||||||
StringBuilder xmlContent = new StringBuilder();
|
try {
|
||||||
xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
StringBuilder xmlContent = new StringBuilder();
|
||||||
.append("<manifest>")
|
xmlContent
|
||||||
.append("<remote name=\"remote1\" fetch=\".\" />")
|
.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
||||||
.append("<default revision=\"master\" remote=\"remote1\" />")
|
.append("<manifest>")
|
||||||
.append("<project path=\"foo\" name=\"")
|
.append("<remote name=\"remote1\" fetch=\".\" />")
|
||||||
.append(defaultUri)
|
.append("<default revision=\"master\" remote=\"remote1\" />")
|
||||||
.append("\" revision=\"")
|
.append("<project path=\"foo\" name=\"").append(defaultUri)
|
||||||
.append(BRANCH)
|
.append("\" revision=\"").append(BRANCH).append("\" >")
|
||||||
.append("\" >")
|
.append("<copyfile src=\"hello.txt\" dest=\"Hello\" />")
|
||||||
.append("<copyfile src=\"hello.txt\" dest=\"Hello\" />")
|
.append("</project>").append("</manifest>");
|
||||||
.append("</project>")
|
JGitTestUtil.writeTrashFile(tempDb, "old.xml",
|
||||||
.append("</manifest>");
|
xmlContent.toString());
|
||||||
JGitTestUtil.writeTrashFile(tempDb, "old.xml", xmlContent.toString());
|
RepoCommand command = new RepoCommand(remoteDb);
|
||||||
RepoCommand command = new RepoCommand(remoteDb);
|
command.setPath(tempDb.getWorkTree().getAbsolutePath() + "/old.xml")
|
||||||
command.setPath(tempDb.getWorkTree().getAbsolutePath() + "/old.xml")
|
.setURI(rootUri).call();
|
||||||
.setURI(rootUri)
|
xmlContent = new StringBuilder();
|
||||||
.call();
|
xmlContent
|
||||||
xmlContent = new StringBuilder();
|
.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
||||||
xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
.append("<manifest>")
|
||||||
.append("<manifest>")
|
.append("<remote name=\"remote1\" fetch=\".\" />")
|
||||||
.append("<remote name=\"remote1\" fetch=\".\" />")
|
.append("<default revision=\"master\" remote=\"remote1\" />")
|
||||||
.append("<default revision=\"master\" remote=\"remote1\" />")
|
.append("<project path=\"bar\" name=\"")
|
||||||
.append("<project path=\"bar\" name=\"")
|
.append(defaultUri)
|
||||||
.append(defaultUri)
|
.append("\" revision=\"")
|
||||||
.append("\" revision=\"")
|
.append(BRANCH)
|
||||||
.append(BRANCH)
|
.append("\" >")
|
||||||
.append("\" >")
|
.append("<copyfile src=\"hello.txt\" dest=\"Hello.txt\" />")
|
||||||
.append("<copyfile src=\"hello.txt\" dest=\"Hello.txt\" />")
|
.append("</project>").append("</manifest>");
|
||||||
.append("</project>")
|
JGitTestUtil.writeTrashFile(tempDb, "new.xml",
|
||||||
.append("</manifest>");
|
xmlContent.toString());
|
||||||
JGitTestUtil.writeTrashFile(tempDb, "new.xml", xmlContent.toString());
|
command = new RepoCommand(remoteDb);
|
||||||
command = new RepoCommand(remoteDb);
|
command.setPath(tempDb.getWorkTree().getAbsolutePath() + "/new.xml")
|
||||||
command.setPath(tempDb.getWorkTree().getAbsolutePath() + "/new.xml")
|
.setURI(rootUri).call();
|
||||||
.setURI(rootUri)
|
// Clone it
|
||||||
.call();
|
File directory = createTempDirectory("testReplaceManifestBare");
|
||||||
// Clone it
|
Repository localDb = Git.cloneRepository().setDirectory(directory)
|
||||||
File directory = createTempDirectory("testReplaceManifestBare");
|
.setURI(remoteDb.getDirectory().toURI().toString()).call()
|
||||||
Repository localDb = Git
|
.getRepository();
|
||||||
.cloneRepository()
|
// The Hello file should not exist
|
||||||
.setDirectory(directory)
|
File hello = new File(localDb.getWorkTree(), "Hello");
|
||||||
.setURI(remoteDb.getDirectory().toURI().toString())
|
assertFalse("The Hello file shouldn't exist", hello.exists());
|
||||||
.call()
|
// The Hello.txt file should exist
|
||||||
.getRepository();
|
File hellotxt = new File(localDb.getWorkTree(), "Hello.txt");
|
||||||
// The Hello file should not exist
|
assertTrue("The Hello.txt file should exist", hellotxt.exists());
|
||||||
File hello = new File(localDb.getWorkTree(), "Hello");
|
// The .gitmodules file should have 'submodule "bar"' and shouldn't
|
||||||
assertFalse("The Hello file shouldn't exist", hello.exists());
|
// have
|
||||||
// The Hello.txt file should exist
|
// 'submodule "foo"' lines.
|
||||||
File hellotxt = new File(localDb.getWorkTree(), "Hello.txt");
|
File dotmodules = new File(localDb.getWorkTree(),
|
||||||
assertTrue("The Hello.txt file should exist", hellotxt.exists());
|
Constants.DOT_GIT_MODULES);
|
||||||
// The .gitmodules file should have 'submodule "bar"' and shouldn't have
|
localDb.close();
|
||||||
// 'submodule "foo"' lines.
|
BufferedReader reader = new BufferedReader(new FileReader(
|
||||||
File dotmodules = new File(localDb.getWorkTree(),
|
dotmodules));
|
||||||
Constants.DOT_GIT_MODULES);
|
boolean foo = false;
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(dotmodules));
|
boolean bar = false;
|
||||||
boolean foo = false;
|
while (true) {
|
||||||
boolean bar = false;
|
String line = reader.readLine();
|
||||||
while (true) {
|
if (line == null)
|
||||||
String line = reader.readLine();
|
break;
|
||||||
if (line == null)
|
if (line.contains("submodule \"foo\""))
|
||||||
break;
|
foo = true;
|
||||||
if (line.contains("submodule \"foo\""))
|
if (line.contains("submodule \"bar\""))
|
||||||
foo = true;
|
bar = true;
|
||||||
if (line.contains("submodule \"bar\""))
|
}
|
||||||
bar = true;
|
reader.close();
|
||||||
|
assertTrue("The bar submodule should exist", bar);
|
||||||
|
assertFalse("The foo submodule shouldn't exist", foo);
|
||||||
|
} finally {
|
||||||
|
tempDb.close();
|
||||||
|
remoteDb.close();
|
||||||
}
|
}
|
||||||
reader.close();
|
|
||||||
assertTrue("The bar submodule should exist", bar);
|
|
||||||
assertFalse("The foo submodule shouldn't exist", foo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRemoveOverlappingBare() throws Exception {
|
public void testRemoveOverlappingBare() throws Exception {
|
||||||
Repository remoteDb = createBareRepository();
|
Repository remoteDb = createBareRepository();
|
||||||
Repository tempDb = createWorkRepository();
|
Repository tempDb = createWorkRepository();
|
||||||
StringBuilder xmlContent = new StringBuilder();
|
try {
|
||||||
xmlContent.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
StringBuilder xmlContent = new StringBuilder();
|
||||||
.append("<manifest>")
|
xmlContent
|
||||||
.append("<remote name=\"remote1\" fetch=\".\" />")
|
.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
|
||||||
.append("<default revision=\"master\" remote=\"remote1\" />")
|
.append("<manifest>")
|
||||||
.append("<project path=\"foo/bar\" name=\"")
|
.append("<remote name=\"remote1\" fetch=\".\" />")
|
||||||
.append(groupBUri)
|
.append("<default revision=\"master\" remote=\"remote1\" />")
|
||||||
.append("\" />")
|
.append("<project path=\"foo/bar\" name=\"")
|
||||||
.append("<project path=\"a\" name=\"")
|
.append(groupBUri).append("\" />")
|
||||||
.append(groupAUri)
|
.append("<project path=\"a\" name=\"").append(groupAUri)
|
||||||
.append("\" />")
|
.append("\" />").append("<project path=\"foo\" name=\"")
|
||||||
.append("<project path=\"foo\" name=\"")
|
.append(defaultUri).append("\" />").append("</manifest>");
|
||||||
.append(defaultUri)
|
JGitTestUtil.writeTrashFile(tempDb, "manifest.xml",
|
||||||
.append("\" />")
|
xmlContent.toString());
|
||||||
.append("</manifest>");
|
RepoCommand command = new RepoCommand(remoteDb);
|
||||||
JGitTestUtil.writeTrashFile(
|
command.setPath(
|
||||||
tempDb, "manifest.xml", xmlContent.toString());
|
tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
||||||
RepoCommand command = new RepoCommand(remoteDb);
|
.setURI(rootUri).call();
|
||||||
command
|
// Clone it
|
||||||
.setPath(tempDb.getWorkTree().getAbsolutePath() + "/manifest.xml")
|
File directory = createTempDirectory("testRemoveOverlappingBare");
|
||||||
.setURI(rootUri)
|
Repository localDb = Git.cloneRepository().setDirectory(directory)
|
||||||
.call();
|
.setURI(remoteDb.getDirectory().toURI().toString()).call()
|
||||||
// Clone it
|
.getRepository();
|
||||||
File directory = createTempDirectory("testRemoveOverlappingBare");
|
// The .gitmodules file should have 'submodule "foo"' and shouldn't
|
||||||
Repository localDb = Git
|
// have
|
||||||
.cloneRepository()
|
// 'submodule "foo/bar"' lines.
|
||||||
.setDirectory(directory)
|
File dotmodules = new File(localDb.getWorkTree(),
|
||||||
.setURI(remoteDb.getDirectory().toURI().toString())
|
Constants.DOT_GIT_MODULES);
|
||||||
.call()
|
localDb.close();
|
||||||
.getRepository();
|
BufferedReader reader = new BufferedReader(new FileReader(
|
||||||
// The .gitmodules file should have 'submodule "foo"' and shouldn't have
|
dotmodules));
|
||||||
// 'submodule "foo/bar"' lines.
|
boolean foo = false;
|
||||||
File dotmodules = new File(localDb.getWorkTree(),
|
boolean foobar = false;
|
||||||
Constants.DOT_GIT_MODULES);
|
boolean a = false;
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(dotmodules));
|
while (true) {
|
||||||
boolean foo = false;
|
String line = reader.readLine();
|
||||||
boolean foobar = false;
|
if (line == null)
|
||||||
boolean a = false;
|
break;
|
||||||
while (true) {
|
if (line.contains("submodule \"foo\""))
|
||||||
String line = reader.readLine();
|
foo = true;
|
||||||
if (line == null)
|
if (line.contains("submodule \"foo/bar\""))
|
||||||
break;
|
foobar = true;
|
||||||
if (line.contains("submodule \"foo\""))
|
if (line.contains("submodule \"a\""))
|
||||||
foo = true;
|
a = true;
|
||||||
if (line.contains("submodule \"foo/bar\""))
|
}
|
||||||
foobar = true;
|
reader.close();
|
||||||
if (line.contains("submodule \"a\""))
|
assertTrue("The foo submodule should exist", foo);
|
||||||
a = true;
|
assertFalse("The foo/bar submodule shouldn't exist", foobar);
|
||||||
|
assertTrue("The a submodule should exist", a);
|
||||||
|
} finally {
|
||||||
|
tempDb.close();
|
||||||
|
remoteDb.close();
|
||||||
}
|
}
|
||||||
reader.close();
|
|
||||||
assertTrue("The foo submodule should exist", foo);
|
|
||||||
assertFalse("The foo/bar submodule shouldn't exist", foobar);
|
|
||||||
assertTrue("The a submodule should exist", a);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -90,7 +90,9 @@ public void setUp() throws Exception {
|
||||||
.setPath("submodule")
|
.setPath("submodule")
|
||||||
.setURI(submoduleStandalone.getDirectory().toURI().toString())
|
.setURI(submoduleStandalone.getDirectory().toURI().toString())
|
||||||
.call();
|
.call();
|
||||||
|
submoduleStandalone.close();
|
||||||
submodule_trash = submodule_db.getWorkTree();
|
submodule_trash = submodule_db.getWorkTree();
|
||||||
|
addRepoToClose(submodule_db);
|
||||||
writeTrashFile("fileInRoot", "root");
|
writeTrashFile("fileInRoot", "root");
|
||||||
Git rootGit = Git.wrap(db);
|
Git rootGit = Git.wrap(db);
|
||||||
rootGit.add().addFilepattern("fileInRoot").call();
|
rootGit.add().addFilepattern("fileInRoot").call();
|
||||||
|
|
|
@ -131,7 +131,8 @@ public void addSubmodule() throws Exception {
|
||||||
command.setURI(uri);
|
command.setURI(uri);
|
||||||
Repository repo = command.call();
|
Repository repo = command.call();
|
||||||
assertNotNull(repo);
|
assertNotNull(repo);
|
||||||
addRepoToClose(repo);
|
ObjectId subCommit = repo.resolve(Constants.HEAD);
|
||||||
|
repo.close();
|
||||||
|
|
||||||
SubmoduleWalk generator = SubmoduleWalk.forIndex(db);
|
SubmoduleWalk generator = SubmoduleWalk.forIndex(db);
|
||||||
assertTrue(generator.next());
|
assertTrue(generator.next());
|
||||||
|
@ -141,9 +142,9 @@ public void addSubmodule() throws Exception {
|
||||||
assertEquals(path, generator.getModulesPath());
|
assertEquals(path, generator.getModulesPath());
|
||||||
assertEquals(uri, generator.getConfigUrl());
|
assertEquals(uri, generator.getConfigUrl());
|
||||||
Repository subModRepo = generator.getRepository();
|
Repository subModRepo = generator.getRepository();
|
||||||
addRepoToClose(subModRepo);
|
|
||||||
assertNotNull(subModRepo);
|
assertNotNull(subModRepo);
|
||||||
assertEquals(commit, repo.resolve(Constants.HEAD));
|
assertEquals(subCommit, commit);
|
||||||
|
subModRepo.close();
|
||||||
|
|
||||||
Status status = Git.wrap(db).status().call();
|
Status status = Git.wrap(db).status().call();
|
||||||
assertTrue(status.getAdded().contains(Constants.DOT_GIT_MODULES));
|
assertTrue(status.getAdded().contains(Constants.DOT_GIT_MODULES));
|
||||||
|
@ -206,7 +207,6 @@ public void addSubmoduleWithRelativeUri() throws Exception {
|
||||||
fullUri = fullUri.replace('\\', '/');
|
fullUri = fullUri.replace('\\', '/');
|
||||||
assertEquals(fullUri, generator.getConfigUrl());
|
assertEquals(fullUri, generator.getConfigUrl());
|
||||||
Repository subModRepo = generator.getRepository();
|
Repository subModRepo = generator.getRepository();
|
||||||
addRepoToClose(subModRepo);
|
|
||||||
assertNotNull(subModRepo);
|
assertNotNull(subModRepo);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
fullUri,
|
fullUri,
|
||||||
|
@ -215,6 +215,7 @@ public void addSubmoduleWithRelativeUri() throws Exception {
|
||||||
.getString(ConfigConstants.CONFIG_REMOTE_SECTION,
|
.getString(ConfigConstants.CONFIG_REMOTE_SECTION,
|
||||||
Constants.DEFAULT_REMOTE_NAME,
|
Constants.DEFAULT_REMOTE_NAME,
|
||||||
ConfigConstants.CONFIG_KEY_URL));
|
ConfigConstants.CONFIG_KEY_URL));
|
||||||
|
subModRepo.close();
|
||||||
assertEquals(commit, repo.resolve(Constants.HEAD));
|
assertEquals(commit, repo.resolve(Constants.HEAD));
|
||||||
|
|
||||||
Status status = Git.wrap(db).status().call();
|
Status status = Git.wrap(db).status().call();
|
||||||
|
|
|
@ -135,8 +135,8 @@ public void apply(DirCacheEntry ent) {
|
||||||
assertTrue(generator.next());
|
assertTrue(generator.next());
|
||||||
assertEquals(url, generator.getConfigUrl());
|
assertEquals(url, generator.getConfigUrl());
|
||||||
Repository subModRepository = generator.getRepository();
|
Repository subModRepository = generator.getRepository();
|
||||||
addRepoToClose(subModRepository);
|
|
||||||
StoredConfig submoduleConfig = subModRepository.getConfig();
|
StoredConfig submoduleConfig = subModRepository.getConfig();
|
||||||
|
subModRepository.close();
|
||||||
assertEquals(url, submoduleConfig.getString(
|
assertEquals(url, submoduleConfig.getString(
|
||||||
ConfigConstants.CONFIG_REMOTE_SECTION,
|
ConfigConstants.CONFIG_REMOTE_SECTION,
|
||||||
Constants.DEFAULT_REMOTE_NAME, ConfigConstants.CONFIG_KEY_URL));
|
Constants.DEFAULT_REMOTE_NAME, ConfigConstants.CONFIG_KEY_URL));
|
||||||
|
@ -207,8 +207,8 @@ public void apply(DirCacheEntry ent) {
|
||||||
assertTrue(generator.next());
|
assertTrue(generator.next());
|
||||||
assertEquals("git://server/sub.git", generator.getConfigUrl());
|
assertEquals("git://server/sub.git", generator.getConfigUrl());
|
||||||
Repository subModRepository1 = generator.getRepository();
|
Repository subModRepository1 = generator.getRepository();
|
||||||
addRepoToClose(subModRepository1);
|
|
||||||
StoredConfig submoduleConfig = subModRepository1.getConfig();
|
StoredConfig submoduleConfig = subModRepository1.getConfig();
|
||||||
|
subModRepository1.close();
|
||||||
assertEquals("git://server/sub.git", submoduleConfig.getString(
|
assertEquals("git://server/sub.git", submoduleConfig.getString(
|
||||||
ConfigConstants.CONFIG_REMOTE_SECTION,
|
ConfigConstants.CONFIG_REMOTE_SECTION,
|
||||||
Constants.DEFAULT_REMOTE_NAME, ConfigConstants.CONFIG_KEY_URL));
|
Constants.DEFAULT_REMOTE_NAME, ConfigConstants.CONFIG_KEY_URL));
|
||||||
|
|
|
@ -121,9 +121,9 @@ public void apply(DirCacheEntry ent) {
|
||||||
SubmoduleWalk generator = SubmoduleWalk.forIndex(db);
|
SubmoduleWalk generator = SubmoduleWalk.forIndex(db);
|
||||||
assertTrue(generator.next());
|
assertTrue(generator.next());
|
||||||
Repository subRepo = generator.getRepository();
|
Repository subRepo = generator.getRepository();
|
||||||
addRepoToClose(subRepo);
|
|
||||||
assertNotNull(subRepo);
|
assertNotNull(subRepo);
|
||||||
assertEquals(commit, subRepo.resolve(Constants.HEAD));
|
assertEquals(commit, subRepo.resolve(Constants.HEAD));
|
||||||
|
subRepo.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -175,12 +175,12 @@ public void apply(DirCacheEntry ent) {
|
||||||
assertNull(gen.getModulesUpdate());
|
assertNull(gen.getModulesUpdate());
|
||||||
assertNull(gen.getModulesUrl());
|
assertNull(gen.getModulesUrl());
|
||||||
Repository subRepo = gen.getRepository();
|
Repository subRepo = gen.getRepository();
|
||||||
addRepoToClose(subRepo);
|
|
||||||
assertNotNull(subRepo);
|
assertNotNull(subRepo);
|
||||||
assertEquals(modulesGitDir.getAbsolutePath(),
|
assertEquals(modulesGitDir.getAbsolutePath(),
|
||||||
subRepo.getDirectory().getAbsolutePath());
|
subRepo.getDirectory().getAbsolutePath());
|
||||||
assertEquals(new File(db.getWorkTree(), path).getAbsolutePath(),
|
assertEquals(new File(db.getWorkTree(), path).getAbsolutePath(),
|
||||||
subRepo.getWorkTree().getAbsolutePath());
|
subRepo.getWorkTree().getAbsolutePath());
|
||||||
|
subRepo.close();
|
||||||
assertFalse(gen.next());
|
assertFalse(gen.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,11 +227,11 @@ public void apply(DirCacheEntry ent) {
|
||||||
assertNull(gen.getModulesUpdate());
|
assertNull(gen.getModulesUpdate());
|
||||||
assertNull(gen.getModulesUrl());
|
assertNull(gen.getModulesUrl());
|
||||||
Repository subRepo = gen.getRepository();
|
Repository subRepo = gen.getRepository();
|
||||||
addRepoToClose(subRepo);
|
|
||||||
assertNotNull(subRepo);
|
assertNotNull(subRepo);
|
||||||
assertEqualsFile(modulesGitDir, subRepo.getDirectory());
|
assertEqualsFile(modulesGitDir, subRepo.getDirectory());
|
||||||
assertEqualsFile(new File(db.getWorkTree(), path),
|
assertEqualsFile(new File(db.getWorkTree(), path),
|
||||||
subRepo.getWorkTree());
|
subRepo.getWorkTree());
|
||||||
|
subRepo.close();
|
||||||
assertFalse(gen.next());
|
assertFalse(gen.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -533,28 +533,35 @@ public boolean diff(final ProgressMonitor monitor, int estWorkTreeSize,
|
||||||
}
|
}
|
||||||
Repository subRepo = smw.getRepository();
|
Repository subRepo = smw.getRepository();
|
||||||
if (subRepo != null) {
|
if (subRepo != null) {
|
||||||
ObjectId subHead = subRepo.resolve("HEAD"); //$NON-NLS-1$
|
try {
|
||||||
if (subHead != null && !subHead.equals(smw.getObjectId()))
|
ObjectId subHead = subRepo.resolve("HEAD"); //$NON-NLS-1$
|
||||||
modified.add(smw.getPath());
|
if (subHead != null
|
||||||
else if (ignoreSubmoduleMode != IgnoreSubmoduleMode.DIRTY) {
|
&& !subHead.equals(smw.getObjectId()))
|
||||||
IndexDiff smid = submoduleIndexDiffs.get(smw.getPath());
|
|
||||||
if (smid == null) {
|
|
||||||
smid = new IndexDiff(subRepo, smw.getObjectId(),
|
|
||||||
wTreeIt.getWorkingTreeIterator(subRepo));
|
|
||||||
submoduleIndexDiffs.put(smw.getPath(), smid);
|
|
||||||
}
|
|
||||||
if (smid.diff()) {
|
|
||||||
if (ignoreSubmoduleMode == IgnoreSubmoduleMode.UNTRACKED
|
|
||||||
&& smid.getAdded().isEmpty()
|
|
||||||
&& smid.getChanged().isEmpty()
|
|
||||||
&& smid.getConflicting().isEmpty()
|
|
||||||
&& smid.getMissing().isEmpty()
|
|
||||||
&& smid.getModified().isEmpty()
|
|
||||||
&& smid.getRemoved().isEmpty()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
modified.add(smw.getPath());
|
modified.add(smw.getPath());
|
||||||
|
else if (ignoreSubmoduleMode != IgnoreSubmoduleMode.DIRTY) {
|
||||||
|
IndexDiff smid = submoduleIndexDiffs.get(smw
|
||||||
|
.getPath());
|
||||||
|
if (smid == null) {
|
||||||
|
smid = new IndexDiff(subRepo,
|
||||||
|
smw.getObjectId(),
|
||||||
|
wTreeIt.getWorkingTreeIterator(subRepo));
|
||||||
|
submoduleIndexDiffs.put(smw.getPath(), smid);
|
||||||
|
}
|
||||||
|
if (smid.diff()) {
|
||||||
|
if (ignoreSubmoduleMode == IgnoreSubmoduleMode.UNTRACKED
|
||||||
|
&& smid.getAdded().isEmpty()
|
||||||
|
&& smid.getChanged().isEmpty()
|
||||||
|
&& smid.getConflicting().isEmpty()
|
||||||
|
&& smid.getMissing().isEmpty()
|
||||||
|
&& smid.getModified().isEmpty()
|
||||||
|
&& smid.getRemoved().isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
modified.add(smw.getPath());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
subRepo.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue